Servlet的學習路線
1、 建立Servlet
2、 Servlet的相關配置
3、 Servlet的生命周期
4、 HttpServletRequest接口
5、 HttpServletResponse接口
6、 HttpSession接口
7、 Filter、Listener接口
Servlet的相關配置
1、 建立Servlet extends HttpServlet
2、 配置Serlvet
第1種配置方式: web.xml,web.xml不僅能配置Servlet資訊,還可以配置歡迎頁面,錯誤頁面,其他的配置。
第2種配置方式: 注解(Annotation)
@WebServlet( name = "", urlPatterns = {} )
urlPattern的配置規則:
1. 精确路徑比對
[例] /user/register.do
2. 模糊路徑比對
[例] /user/*
3. 擴充名比對
[例] *.do
4. 預設比對
[例] /
問: 如果一個Request URL能比對多個urlPattern, 執行哪個對應的Servlet?
以優先級為依據: 精确路徑 > 模糊路徑 > 擴充名路徑 > 預設路徑
Servlet類型層次結構
Servlet對象的常見方法剖析
String getServletName(); 擷取Servlet對象的名稱
ServletContext getServletContext(); //擷取Servlet對象的容器(作用于整個項目)Servlet容器,它的生命周期最長,随着tomcat的啟動而産生,關閉而銷毀、更新銷毀。
setAttribute(key,value); 向容器中存儲資料
getAttribute(key); 從容器擷取資料
String getInitParameter(String var1); //擷取(ServletContenxt容器,全局參數也可以擷取)的初始參數值
Enumeration getInitParameterNames(); //擷取初始參數的名稱
ServletConfig getServletConfig(); //擷取配置檔案的資訊還可以調用父容器
使用HttpServletRequest擷取請求資訊
getParameter( String parameterName ) : String
getParameterValues( String parameterName ) : String[]
注意: 參數parameterName往往是表單元素的name屬性.
中文亂碼解決方案:
1. 通過QueryString傳遞中文資料時
修改tomcat/conf/server.xml ->
或在程式中直接對String進行轉碼操作
userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8");
2. 通過請求體傳遞中文資料時
request.setCharacterEncoding("UTF-8");
Servlet生命周期:
自tomcat啟動以來, 首次請求某Servlet時:
1. 容器調用構造器執行個體化該Servlet
2. 調用init()初始化該Servlet
3. 調用該Servlet的service()處理請求
3.1 如果該請求的Method是GET: 調用doGet()
3.2 如果該請求的Method是POST: 調用doPost()
第N(N>=2)次請求該Servlet時,執行上面的第3步
tomcat stop或update時:
4. 調用該Servlet的destroy()銷毀執行個體
最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收。