日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Servlet细节

發(fā)布時(shí)間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet细节 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

修改發(fā)布到tomcat/webapps下面的應(yīng)用名稱:Web Project Settings。

?

修改或刪掉Servlet,web.xml里面相關(guān)的配置不會(huì)與之同步。

?

Servlet的實(shí)現(xiàn)類:

1.GenericServlet:覆寫(xiě)感興趣的方法,一般情況下,只需要覆寫(xiě)service方法。

2.在web開(kāi)發(fā)中,由于使用http協(xié)議,程序員在編寫(xiě)servlet時(shí),一般都是繼承GenericServlet的子類HttpServlet。

在HttpServlet中覆寫(xiě)了service方法,該方法體內(nèi)的代碼會(huì)自動(dòng)判斷用戶的請(qǐng)求方式,如為GET方式,則調(diào)用doGet方法 ,如為post方式,則調(diào)用doPost方法。因此,在開(kāi)發(fā)中,我們完全沒(méi)有必要覆寫(xiě)service方法,直接根據(jù)請(qǐng)求方式覆寫(xiě)對(duì)應(yīng)的doGet和doPost方法即可。

3.HttpServlet在調(diào)用doGet和doPost方法之前(service方法中),會(huì)將ServletRequest和ServletResponse對(duì)象強(qiáng)轉(zhuǎn)成HttpServletRequest和HttpServletResponse。

?

src目錄下面各種類型的文件都會(huì)發(fā)布到WEB-INF目錄下面的classes文件夾下面。

?

Servlet映射

url-pattern用于指定供外界訪問(wèn)的路徑或資源名,"/"表示web應(yīng)用

Servlet映射到的URL中也可以使用*通配符,但是只能有兩種固定的格式:① "*.擴(kuò)展名" ② 以"/"開(kāi)頭并以"/*"結(jié)尾

such as:

<url-pattern>/itcast/*</url-pattern>

<url-pattern>*.do</url-pattern>

注意:

*.do 與 /*這兩種方式不可同時(shí)使用

針對(duì)于滿足多個(gè)條件的訪問(wèn)路徑時(shí),只會(huì)訪問(wèn)一個(gè)Servlet,此時(shí)會(huì)訪問(wèn)路徑最相仿的那個(gè),同時(shí),/*的優(yōu)先級(jí)要高于*.do

?

默認(rèn)的Servlet映射

<url-pattern>/</url-pattern>

?

load-on-startup元素

servlet 元素中配置此元素,會(huì)在web應(yīng)用加載時(shí)實(shí)例化并調(diào)用其init()方法,數(shù)字越小就越先完成初始化,當(dāng)值小于0或者沒(méi)有指定時(shí),表示容器在該servlet被選擇時(shí)才會(huì)去加載。

?

tomcat\conf\web.xml

該服務(wù)器下所有的web應(yīng)用中的web.xml都繼承自此文件

?

http://localhost:8080/day05/a.html

上面的url訪問(wèn)的url在web.xml文件中并沒(méi)有配置

此時(shí)會(huì)去訪問(wèn)缺省的Servlet,在tomcat\conf\web.xml文件中配置了一個(gè)缺省的DefaultServlet,它會(huì)幫我們?nèi)eb應(yīng)用下讀取a.html文件,并打給瀏覽器,如果沒(méi)有發(fā)送404頁(yè)面,也就是說(shuō)通過(guò)IE訪問(wèn)服務(wù)器訪問(wèn)的都是Servlet。

?

Servlet 線程安全問(wèn)題

方法的局部變量不會(huì)有線程安全問(wèn)題!

Servlet 創(chuàng)建之后駐留在內(nèi)存中 所以會(huì)出現(xiàn)線程安全問(wèn)題!

同步的解決方案:對(duì)方法的執(zhí)行過(guò)程進(jìn)行加鎖 synchronized(this) {};

實(shí)現(xiàn)接口的解決方案:實(shí)現(xiàn) SingleThreadModel 接口的 Servlet ,服務(wù)器會(huì)做判斷,當(dāng)有請(qǐng)求過(guò)來(lái),如果 Servlet 對(duì)象忙,服務(wù)器會(huì)再創(chuàng)建一個(gè) Servlet 對(duì)象為用戶提供服務(wù),如果 Servlet 閑置,就直接提供服務(wù),這樣的方式實(shí)際上是回避了線程安全問(wèn)題,單線程訪問(wèn)Servlet,這樣的方式不可取。

轉(zhuǎn)載于:https://www.cnblogs.com/Knuth/archive/2012/04/26/2471675.html

總結(jié)

以上是生活随笔為你收集整理的Servlet细节的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。