【聲明:】本文是作者(蘑菇v5)原創(chuàng),版權(quán)歸作者 蘑菇v5所有彤守,侵權(quán)必究毯侦。本文首發(fā)在簡書。如若轉(zhuǎn)發(fā)具垫,請注明作者和來源地址侈离!未經(jīng)授權(quán),嚴(yán)禁私自轉(zhuǎn)載筝蚕!
概念
Servelt
可以完成將java
程序運(yùn)行到web
環(huán)境中
Servlet的創(chuàng)建
- 寫一個(gè)類讓其繼承
HttpServlet
卦碾。 - 覆蓋
doGet
方法,在doGet
方法中加入一些測試程序 - 配置
web.xml
讓該servlet
可以訪問
Servlet的配置
a.創(chuàng)建<servlet>
<servlet-name>xxxx</servlet-name> //為該servlet設(shè)定一個(gè)名稱
<servlet-class>xxx.xxx.xxx</servlet-class>//servlet的類起宽,要加入包路徑
b.創(chuàng)建<servlet-mapping>
<servlet-name>xxxx</servlet-name>//說明servlet的name
<url-pattern>/xxx<url-pattern>//聲明在瀏覽器中需要訪問的地址
示例代碼洲胖,如下圖1所示:
調(diào)用過程如下圖2:
resp響應(yīng)的使用
使用doGet
或者doPost
方法中的resp
參數(shù)可以向?yàn)g覽器輸出相應(yīng)的數(shù)據(jù)
1、設(shè)置MIME類型
resp.setContentType("text/html");
2坯沪、通過resp獲取PrintWriter的輸出流绿映,并且向?yàn)g覽器寫入數(shù)據(jù)
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body><h1>Its Work</h1></body>");
out.println("</html>");
Servlet的生命周期
對應(yīng)Servlet
而言,用戶將請求提交給Servlet
腐晾,首先會(huì)由web
容器(Tomcat
)截獲叉弦,并且在web.xml
中解析請求獲取相應(yīng)的Servlet
丐一,之后根據(jù)情況判斷是否執(zhí)行init方法
(見備注),doGet
和doPost
會(huì)自動(dòng)調(diào)用service方法
卸奉,通過request
對象處理完請求之后可以通過resp
對象向?yàn)g覽器輸出相應(yīng)信息钝诚。當(dāng)服務(wù)器關(guān)閉時(shí)調(diào)用destory方法
銷毀這個(gè)servlet
備注: init方法
解釋
1、init方法
有兩個(gè)一個(gè)帶參數(shù)榄棵,一個(gè)不帶參數(shù),如果兩個(gè)都覆蓋了(這種情況基本不會(huì)出現(xiàn))潘拱,會(huì)調(diào)用帶參數(shù)
2疹鳄、帶參數(shù)的這個(gè)init方法
可以獲取web.xml
中<init-param>
中的數(shù)據(jù),通過config.getInitParamxx("username")
可以獲取一下xml
的Teacher
這個(gè)值芦岂,init
什么時(shí)候執(zhí)行需要根據(jù)web.xml
中servlet配置中的<load-on-startup>
來確定
<init-param>
<param-name>username</param-name>
<param-value>Teacher</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
load-on-startup
的值為 0或者不寫load-on-startup
都是在第一次調(diào)用servlet
時(shí)才執(zhí)行init方法
瘪弓,如果值>0會(huì)在啟動(dòng)時(shí)調(diào)用init方法