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 的垃圾回收器進行垃圾回收。