servlet是使用Java servlet應用程序設計接口(API)及相關類和方法的Java程序,除了Java servlet API,它還能夠用於擴展和添加API的Java類軟件的包。servlet主要用於處理客戶端傳來的HTTP請求,並返回一個響應。一般所說的servlet就是指httpservlet,可以處理的請求有doGet()、doPost()和service()等方法。html
實現過程web
最先支持 Servlet 技術的是 JavaSoft 的 Java Web Server。此後,一些其它的基於 Java 的 Web Server 開始支持標準的 Servlet API。Servlet 的主要功能在於交互式地瀏覽和修改數據,生成動態 Web 內容。這個過程爲:服務器
1) 客戶端發送請求至服務器端;app
2) 服務器將請求信息發送至 Servlet;jsp
3) Servlet 生成響應內容並將其傳給服務器。響應內容動態生成,一般取決於客戶端的請求;spa
4) 服務器將響應返回給客戶端。設計
servlet的生命週期code
加載orm
實例化xml
調用init()方法初始化該 Servlet
提供服務。service()根據請求方法不一樣調用doGet() 或者 doPost()
銷燬。
destroy():當web服務器和容器關閉時會自動調用HttpServlet.destroy()方法關閉全部打開的資源,並執行一些關閉前的處理。
servlet的配置
在web.xml文件中進行配置:
使用<servlet-name>、<servlet-class>、<servlet-mapping>等標籤來進行配置
doGet()和doPost()
public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { System.out.println("This is doGet"); resp.setContentType("text/html;charset=UTF-8"); String loginId = req.getParameter("loginId"); req.setAttribute("loginId", loginId); req.setAttribute("loginName", "nttdata"); req.getRequestDispatcher("/response.jsp").forward(req, resp); } public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { doGet(req, resp); }
web容器會自動按照請求類型調用servlet提供的方法,如果GET類型的請求就將分給doGet()方法處理,同理如果POST類型就發給doPost()處理,可是通常可能是用doGet()方法,如上,即便是使用了doPost()可是最終仍是調用上面的doGet()。
頁面轉發
servlet中實現頁面轉發只要是利用RequestDispatcher接口實現的。其包括forward()的方法:
forward()方法用於將請求轉發到服務器上的另外一個資源
如上代碼,用forward()方法將頁面請求轉發到了response.jsp頁面