servlet簡介
serv-let ,顧名思義,是一個服務(wù)器組件针史,運行于服務(wù)器端碟狞,由servlet容器所管理,用于生成動態(tài)內(nèi)容族沃。servlet是一個獨立于平臺和協(xié)議的Java類,編寫一個servlet實際是按照servlet規(guī)范編寫一個特殊的java類智润,該類被編譯成平臺獨立的字節(jié)碼,動態(tài)地支持java技術(shù)的服務(wù)器端
servlet容器
servlet容器锯玛,也稱為servlet引擎兼蜈,是web服務(wù)器或應(yīng)用服務(wù)器的一部分。servlet不能獨立運行为狸,必須部署到servlet容器中運行辐棒,由servlet容器實例化和調(diào)用servlet方法,servlet容器在servlet生命周期內(nèi)包含和管理servlet漾根。常見的servlet容器有tomcat、web logic等
servlet和servlet容器的關(guān)系
servlet容器是servlet的運行環(huán)境逼蒙,它的作用是負責處理用戶請求寄疏,當接受到用戶的請求時,調(diào)用某個servlet妖泄,并把servlet的執(zhí)行結(jié)果返回給用戶
web.xml和servlet容器的關(guān)系
web.xml是servlet容器內(nèi)一個負責描述服務(wù)器請求地址和servlet對應(yīng)關(guān)系的文件
servlet的生命周期
1.通過servlet容器創(chuàng)建并實例化servlet對象
2.調(diào)用init()方法初始化servlet
3.調(diào)用service()方法處理客戶端請求
4.調(diào)用destroy()方法銷毀servlet
servlet容器在捕獲到客戶端的請求之后做了什么艘策?
1.接收到客戶端請求后,在servlet隊列中檢索是否已經(jīng)創(chuàng)建過該對象罚渐,是則執(zhí)行第4步驯妄,否則執(zhí)行第2步
2.通過web.xml 文件找到對應(yīng)類的地址,加載并實例化該對象
3.調(diào)用initial()方法初始化該servlet
4.將客戶端的請求信息封裝進HttpServletRequest對象并將創(chuàng)建一個代表響應(yīng)信息HttpServletResponse的對象源织,通過service()傳遞這兩個參數(shù)到servlet中5當servlet容器停止運行時,調(diào)用destroy()方法后卸載servlet
PS1:在service的生命周期里谈息,init()方法和destroy()方法僅調(diào)用一次,而service()方法可以調(diào)用多
PS2:servlet一次創(chuàng)建后被容器存在在隊列中轻姿,可以多次調(diào)用逻炊,直到容器停止運行這些servlet被垃圾回收
web.xml詳解
web.xml文件示例
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>moreservlets.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/abc</url-pattern>
</servletmapping>
</web-app>
- web的xml文件必須以一個xml頭開始,在這個頭文件中可以聲明xml版本和字符編碼
- 其后必須緊跟DOCTYPE聲明豹休,這個聲明告訴服務(wù)器適用的servlet規(guī)范并并指定管理此文件其余部分內(nèi)容的語法的DTD(Document Type Definition桨吊,文檔類型定義)
- 所有部署描述符的根文件是
<web-app>
并最終以</web-app>
結(jié)束 -
<servlet>
聲明一個sevlet -
<servlet-name>
指定servlet的名字 -
<servlet-class>
指定servlet對應(yīng)的類文件 -
<servlet-mapping>
從URL到servlet的印射 -
<servlet-name>
對應(yīng)定義上的servlet-name -
<url-pattern>
指定URL模式屏积,該模式適用通配符 -
<welcome-file-list>
通過<welcome-file>
指定當URL訪問項目時未填路徑時訪問的缺省值
本文章為小白的學習筆記磅甩,有任何錯誤歡迎指出,謝謝大家