一.Servlet的請求流程(Servlet工作原理解析)
二.Servlet的生命周期
1.客戶端發送請求給服務器。
2.服務器開始接受,先判斷該請求的servlet實例是否存在,如果不存在先裝載一個servlet類並創建實例。
如果存在則直接調用該servlet的service方法,之后進行判斷是調用 doGet方法還是doPost方法。
3.servlet創建實例后,調用init方法進行初始化。之后調用servce方法,判斷是調用doGet方法還是doPost方法。
4.最后判斷服務器是否關閉,如果關閉則調用destroy方法。
三.Tomcat的Servlet容器裝載Servlet:
1、自動裝載:某些Servlet如果需要在Servlet容器啟動時就加載,需要在web.xml下它的<Servlet>標簽里中,添加優先級代碼:
<Servlet>
<location-startup>1<location-startup>
</Servlet>
數字越小表示該servlet的優先級越高,會先於其他自動裝載的優先級較低的先裝載。
2、Servlet容器啟動后,客戶首次向某個Servlet發送請求時,Tomcat的Servlet容器會加載一個Servlet。
3、當Servlet類文件被更新后,也會重新加載。
4、Servlet是長期駐留在內存里的。某個Servlet一旦被加載,就會長期存在於服務器的內存里,直到服務器關閉。
5、Servlet被裝載后,Servlet容器創建一個Servlet實例並且調用Servlet的init()方法進行初始化。在Servlet的整個生命周期內,init()方法只被調用一次。
四:Servlet/JSP九大內置對象
五: Servlet的路徑跳轉
一、JSP跳轉到Servlet
1、相對路徑,如href="servlet/xxServlet" ,注意:如果寫成"/servletxxServlet"會報錯,因為第一個'/'表示的是【服務器根目錄http://localhost:8080/】
2、絕對路徑,通過內置成員變量path實現,如href="<%=path%>/servlet/xxServlet"
注意:這里的path得到的是項目根目錄,如【http://localhost:8080/xxProjectDemo】
二、Servlet跳轉JSP
1、請求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp");
這里通過request.getContextPath()方法獲得項目根目錄,或者通過"../xxx.jsp"取得上路徑得到
2、服務器內部轉發:request.getRequestDispatcher("../xxx.jsp").forward(req,resp);
注意:web.xml中url-pattern必須以/開頭,這里/表示項目的根目錄。
六:Servlet中獲取初始化參數
首先設置初始化參數,可以有若干個參數。
<servlet>
<servlet-name>xxServlet</servlet-name>
<servlet-class>com.xxx.xxServlet</servlet-class>
<init-param>
<param-name>xxname</param-name>
<param-value>xxvalue</param-value>
</init-param>
</servlet>
servlet中獲取值:String xxvalue = this.getInitParameter("xxname");