Servlet3.x 應用開發
阿新 • • 發佈:2020-09-16
Servlet.x新特性概述
Servlet標準一直在推進,Servlet3.0相比之前的版本有很多特性和改進。
學習Java Web開發,Servlet絕對是最重要也是最應該好好掌握和深入理解的部分。
非同步處理支援
Servlet3.x之前的針對每個請求都是阻塞的,只要伺服器沒有處理完任務時不會響應客戶端的,這樣的體驗並不好。 解決方法可以是借組訊息中介軟體來非同步處理,Servlet3.x開始支援開啟新執行緒非同步處理,無需等待新執行緒處理完成即可響應客戶端。
@WebServlet
@WebServlet用於將一個類宣告為Servlet,該註解將會在部署時被容器處理,容器將根據具體的屬性配置將相應的類部署為Servlet。
案例:
package servlet; import pojo.User; import service.IUserService; import service.UserService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; import java.io.IOException; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID=1L; private IUserService service; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { HttpSession session=request.getSession(); String name=request.getParameter("name"); String password=request.getParameter("password"); service=new UserService(); User user=service.userLogin(name,password); if(user!=null){ session.getAttribute("user"); request.getRequestDispatcher("/index2").forward(request,response); }else { response.sendRedirect("login.jsp"); } } protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
檔案上傳下載新方式支援
Servlet3.x之前對於檔案上傳並不友好,編寫相對麻煩。
Servlet3.x之後提供了Part類來表示上傳檔案物件,完全可以藉助該物件實現上傳功能。 備註:可以去檢視Part的原始碼和其中的方法
技術心得:
如果請求的是MINE型別不是multipart/form-date,則不能使用某些方法,否則將拋異常。