servlet是在服務器端運行的一個小程序。一個servlet就是一個java類,並且可以通過“請求-響應”編程模型來訪問的這個駐留在服務器內存里的servlet程序。
二、tomcat容器等級
tomcat的容器等級分為四個等級,servlet的容器管理context容器,一個context對應一個web工程。
Engine是個引擎容器
HOST是主機容器

三、手工編寫servlet程序的步驟
1.繼承HttpServlet
2.重寫doGet()或者doPost()方法
3.在web.xml中注冊Servlet
- 使用普通的方法對servlet進行注冊
<servlet>
<!--servlet的名字-->
<servlet-name>MyServlet</servlet-name>
<!--servlet類的名字(包括完整包名)-->
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--要與上面的那個名字一一對應-->
<servlet-name>MyServlet</servlet-name>
<!--表示該servlet的訪問路徑 /表示項目的根目錄-->
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
- JavaEE6及其以上可以使用注釋來對servlet進行注冊
name為必須,urlPatterns或者value為指定的URL訪問地址,也可定義多個URL地址訪問
@WebServlet(name = "MyFirstServlet",urlPatterns = "/servlet/MyFirstServlet")
@WebServlet有很多的屬性:
asyncSupported | 聲明servlet是否支持異步操作模式 |
description | servlet的描述 |
displayName | servlet的顯示名稱 |
initParams | servlet的init參數 |
name | servlet的名稱 |
urlPatterns | servlet的訪問URL |
value | servlet的訪問URL |
四、servlet的生命周期
1.初始化階段,調用init()方法
2.響應客戶請求階段,調用servlet()方法。由servlet()方法根據提交方式選擇執行doGet()或者doPost()方法。
3.終止階段,調用destroy()方法
servlet生命周期階段包括初始化、加載、實例化、服務和銷毀。

在下列時刻servlet容器裝在servlet:
1.servlet容器啟動時自動裝在某些servlet,實現它只需要在web.xml文件中的<Servlet></Servlet>之間添加如下代碼:<load-on-startup>1</load-on-startup>數字越小表示優先級越高。
2.在servlet容器啟動后,客戶端首次向servlet發送請求。
3.servlet類文件被更新后,重新裝載servlet。
servlet被裝載后,servlet容器創建一個servlet實例並且調用servlet的init()方法進行初始化。在servlet的整個生命周期內,init()方法只被調用一次。
五、servlet與九大內置對象
六、如何通過servlet獲取jsp表單中的值與如何將值發送給jsp
七、servlet路徑跳轉
八、獲取初始化參數
五、servlet與九大內置對象
如何在servlet中獲取jsp的九大內置對象
JSP對象 | 如何獲取 |
out | response.getWriter方法(類型並不一致,但功能一致) |
request | service方法中的參數 |
response | service方法中的參數 |
session | request.getSession()方法 |
application | getServletContext()方法 |
exception | Throwable |
page | this |
pageContext | PageContext |
config | getServletConfig方法 |
六、如何通過servlet獲取jsp表單中的值與如何將值發送給jsp
從servlet獲取jsp表單中的值:
//獲取單個值的時候
String context=request.getParameter("username");
//獲取復選框等多個選址的時候
String[] parameterValues = request.getParameterValues("username");
servlet將值發送給jsp
將內容存儲到session中,將內容通過請求轉發的方式發送給jsp
示例:
// 將內容存儲到session中
request.getSession().setAttribute("a","object");
// 通過請求轉發將其發送給jsp頁面
request.getRequestDispatcher("index.jsp").forward(request,response);
七、servlet路徑跳轉
絕對路徑:從根目錄來計算 "/"表示服務器的根目錄
相對路徑:從相對於當前資源來計算
xml中servlet的映射地址必須以"/"開頭
在servlet中使用請求重定向的時候,可以使用request.getContextPath方法獲取上下文對象后加上目標jsp名字
在servlet中使用服務器內不跳轉,可以使用 "/"表示項目的根目錄
八、獲取初始化參數
在web.xml中配置servlet時,可以配置一些初始化參數。而在servlet中可以通過ServletConfig接口提供的方法來取得這些參數。
在XML的servlet標簽里面設置初始化參數
<servlet>
<servlet-name>GetInitParameterServlet</servlet-name>
<servlet-class>servlet.GetInitParameterServlet</servlet-class>
<!--設置初始化參數-->
<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GetInitParameterServlet</servlet-name>
<url-pattern>/servlet/GetInitParameterServlet</url-pattern>
</servlet-mapping>
在servlet中重寫init()方法
通過getInitParameter方法獲取
@Override
public void init() throws ServletException {
String username = this.getInitParameter("username");
this.setUsername(username);
}
本筆記地址