一.Servlet
1.1.概述
sun提供的一種動態(tài)web資源開發(fā)技術(shù)苦掘。本質(zhì)上就是一段java小程序议双,可以將servlet加入到servlet容器中運行狐胎。
*Servlet容器--能夠運行Servlet的環(huán)境就叫做Servlet容器---tomcat是其中之一
*web容器--能夠運行web應(yīng)用的環(huán)境就叫做web容器(注意:Servlet容器是web容器的子集)
1.2.寫一個類實現(xiàn)sun公司定義的servlet接口
1.2.1.類的實現(xiàn)
直接引用子類GenericServlet(這樣就只需要實現(xiàn)public void service(ServletRequest req, ServletResponse res))
1.2.2.將寫好的類配置到tomcat中web應(yīng)用中
將編譯好的class文件放到webapp的WEB-INF\class中客给,并且為其配置web.xml(WEB-INF的模板有例程侈净,可以復(fù)制),如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app?xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>FIRST_SERVLET</servlet-name><!-- 這是servlet的名字-->
<servlet-class>com.mai.FirstServlet</servlet-class><!--class文件的路徑-->
</servlet>
<servlet-mapping>
<servlet-name>FIRST_SERVLET</servlet-name><!--通過名字關(guān)聯(lián)servlet-->
<url-pattern>/servlet/FirstServlet</url-pattern><!--網(wǎng)址上URL的訪問路徑-->
</servlet-mapping>
</web-app>
1.3.Servlet的調(diào)用過程/生命周期
1.4.Servlet的繼承結(jié)構(gòu)
1.4.1.Servlet接口---定義了Servlet應(yīng)該具有的基本方法
--GenericServlet---通用基本servlet實現(xiàn)皱坛,對于不常用的方法在這個實現(xiàn)類中進行基本的實現(xiàn)编曼,對于servlet設(shè)計為了抽象方法,需要子類實現(xiàn)
--HttpServlet---在通用servlet的基礎(chǔ)上基于HTTP協(xié)議進行了進一步的強化剩辟,實現(xiàn)了GenericServlet的servlet方法掐场,并且判斷請求方式,依據(jù)請求方式贩猎,調(diào)用對應(yīng)的doXXX()熊户;這樣我們開發(fā)servlet的過程中,只需集成HTTPservlet,覆蓋具體要處理的DOXXX(),就可以根據(jù)不同的請求方式進行不同的處理吭服;一般不覆蓋servlet(),只需覆蓋doget()/dopost()就可以了嚷堡。
1.5.Servlet的細節(jié)問題
1.5.1.一個<servlet>可以對應(yīng)多個<servlet-mapping>,從而實現(xiàn)一個servlet可以有多個路徑
1.5.2.url-partten中的路徑可以使用*號匹配符進行配置,但是注意艇棕,只能是以/開頭 /*結(jié)尾或*蝌戒,后綴這里有兩種方式;由于*的引入沼琉,有可能一個路徑被多個urlpartten匹配北苟,優(yōu)先級如下:(1)哪個像找哪個;(2)*.后綴永遠優(yōu)先級最低.
1.5.3.<serlvet>可以配置<load-on-startup>可以用來指定啟動順序
1.5.4.缺省serlvet:
如果有一個servlet的url-partten被配置為一道"/",這個servlet就變成了默認servlet打瘪,其他servlet不處理的請求都由缺省servlet處理.其實對于靜態(tài)資源的訪問就是由缺省servlet來執(zhí)行粹淋,設(shè)置404頁面等提示也是由缺省servlet處理;通常我們不會自己去配置缺省servlet
1.5.5.線程安全問題
由于默認情況下servlet在內(nèi)存中只有一個對象吸祟,當(dāng)多個瀏覽器并發(fā)訪問