Servlet介紹
Servlet是一個特殊的Java類,必須繼承於HttpServlet,提供了不同的方法響應客戶端的請求:
doGet:響應GET請求
doPost:響應POST請求
doPut:響應PUT請求
doDelete:相應DELETE請求
HttpServlet還包含了兩種方法:
init(ServletConfig config):創建實例時,初始化資源
destory():銷燬Servlet實例,自動調用該方法回收資源
使用標籤形式的Servlet
@WebServlet(name="firstServlet", urlPattern={"/firstServlet"})
public class FirstServlet extends HttpServlet {
//客戶端的響應方法,使用該方法可以響應客戶端所有的請求類型
//service方法可以統一處理用戶請求
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//內容
}
}
@WebServlet是屬於Servlet 3.0的Annoation
屬性:
1.asyncSupported 非必須,指定該Servlet是否支持異步操作模式
2.displayName 非必須,指定該Servlet的顯示名
3.initParams 非必須,用於爲該Servlet配置參數
4.loadOnStartup 非必須,用於將該Servlet配置成load-on-startup的Servlet
5.name 非必須,指定該Servlet名稱
6.urlPatterns/value 非必須,這兩個屬性都是處理該Servlet的URL
上述方式等同於
<servlet>
<servlet-name>firstServlet</servlet-name> //相當於name屬性
<servlet-class>test.firstServlet</servlet-class> //實現類
</servlet>
<servlet-mapping>
<servlet-name>firstServlet</servlet-name>
<url-pattern>/first</url-pattern> //urlPattern屬性
</servlet-mapping>
jsp/servlet生命週期
創建Servlet實例的時機
1.客戶端第一次請求這個Servlet實例,系統創建該實例
2.WEB應用啓動立即創建,即Load-on-startup
生命週期
1.創建Servlet實例
2.web容器調用init方法,進行初始化
3.Servlet初始化後,將一直存在於容器中,用於響應客戶端請求
4.web容器決定銷燬Servlet時,先調用destroy方法,通常在關閉web應用時銷燬servlet
load-on-startup
註解:
@WebServlet(loadOnStartup=1)
等同於配置文件:
<Servlet>
... //省略其他
<load-on-startup>1</load-on-startup>
</Servlet>
initParams
註解:
@WebServlet(initParams={
@WebInitParam(name="driver", value="com.mysql.jdbc.Driver"),
@WebInitParam(name="url", value="jdbc:mysql://localhost:3306/javaee"),
@WebInitParam(name="username", value="root"),
@WebInitParam(name="password", value="root")})
調用:
ServletConfig config = getServletConfig(); //獲取ServletConfig對象
String driver = config.getInitParameter("driver"); //獲取配置參數driver
等同於配置文件:
<servlet>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
</servlet>
使用Servlet作爲控制器
在標準MVC模式中
Servlet作爲控制器使用
類似於調度員:將所有用戶請求都發給Servlet,Servlet調用Model處理用戶請求,並調用JSP呈現處理結果
Model通常由JavaBean充當,所有業務邏輯,數據訪問邏輯都在Model中實現。可能還有豐富的組件,例如Dao,領域對象
JSP僅作爲View
1.收集用戶的請求參數
2.將應用的處理結果,狀態呈現給用戶