J2EE 13規範(3)-Java Servlet,j2ee-java
Servlet簡介:
一個servlet就是Java程式設計語言中的一個類,它被用來擴充伺服器的效能,伺服器上駐留著可以通過“要求-回應”編程模型來訪問的應用程式。雖然servlet可以對任何類型的請求產生響應,但通常只用來擴充Web伺服器的應用程式。Java Servlet技術為這些應用程式定義了一個特定於HTTP的 servlet類。
javax.servlet和javax.servlet.http包為編寫servlet提供了介面和類。所有的servlet都必須實現Servlet介面,該介面定義了生命週期方法。
當實現一個通用的服務時,您可以使用或擴充由Java Servlet API提供的GenericServlet類。HttpServlet類提供了一些方法,諸如doGet和doPost,以用於處理特定於HTTP的服務。
Servlet工作流程
在Web容器(這裡的容器我們使用的是TomCat伺服器)載入和執行個體化servlet類之後、servlet執行個體傳遞來自用戶端的請求之前,TomCat容器對servlet進行初始化。使用者可以自訂這個初始化過程,以允許servlet讀持久的配置資料、初始化資源,並且忽略Servlet介面的init方法以執行任何其它的一次性的活動。servlet必須使用UnavailableException來完成初始化過程。請看Java代碼:
import java.text.*;import java.util.*;import java.io.*;import javax.servlet.http.*;import javax.servlet.*;public class StudentServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{doPost(request,response);}public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{doGet(request,response); String sBeginDate = request.getParameter("beginDate"); String sEndDate = request.getParameter("endDate"); Date beginDate = new Date(); Date endDate = new Date(); try{ beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate); endDate = new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate); }catch(Exception e){ e.printStackTrace(); } System.out.println("sBeginDate=" + sBeginDate); System.out.println("sEndDate=" + sEndDate);}}
執行個體解析:
HTML代碼:
<html><head><title>學生管理</title></head><body><h1>根據出生日期段查詢</h1><form action="queryStudentServlet">出生日期:<input type="text" name="beginDate">至<input type="text" name="endDate"><input type="submit" value="查詢學生"></form></body></html>
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet><servlet-name>StudentMgrServlet</servlet-name><servlet-class>StudentServlet</servlet-class></servlet><servlet-mapping><servlet-name>StudentMgrServlet</servlet-name><url-pattern>/queryStudentServlet</url-pattern></servlet-mapping></web-app>
Servlet生命週期
生命的全過程,載入Servlet並執行個體化,初始化init,處理請求,退出服務。
注意:Servlet只執行個體化一次,init方法也只執行一次,Servlet不是安全執行緒的。
最後還有一點關於Cookies和Session的說明: Cookies存到自身用戶端中,但是Session存入伺服器。