Servlet學(xué)習(xí)筆記

出自https://blog.csdn.net/ls5718/article/details/51620649


Servlet 有以下幾點優(yōu)勢:

1、性能明顯更好额衙。

2、Servlet 在 Web 服務(wù)器的地址空間內(nèi)執(zhí)行怕吴。這樣它就沒有必要再創(chuàng)建一個單獨的進(jìn)程來處理每個客戶端請求窍侧。

3、Servlet 是獨立于平臺的转绷,因為它們是用 Java 編寫的伟件。

4、服務(wù)器上的 Java 安全管理器執(zhí)行了一系列限制议经,以保護(hù)服務(wù)器計算機(jī)上的資源斧账。因此,Servlet 是可信的煞肾。

5咧织、Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機(jī)制與 applets籍救、數(shù)據(jù)庫或其他軟件進(jìn)行交互习绢。


三、怎樣理解Servlet的單實例多線程钧忽?

不同的用戶同時對同一個業(yè)務(wù)(如注冊)發(fā)出請求毯炮,那這個時候容器里產(chǎn)生的有是幾個servlet實例呢逼肯?

答案是:只有一個servlet實例。一個servlet是在第一次被訪問時加載到內(nèi)存并實例化的桃煎。同樣的業(yè)務(wù)請求共享一個servlet實例篮幢。不同的業(yè)務(wù)請求一般對應(yīng)不同的servlet。

由于Servlet/JSP默認(rèn)是以多線程模式執(zhí)行的为迈,所以三椿,在編寫代碼時需要非常細(xì)致地考慮多線程的安全性問題。

JSP的中存在的多線程問題:?

當(dāng)客戶端第一次請求某一個JSP文件時葫辐,服務(wù)端把該JSP編譯成一個CLASS文件搜锰,并創(chuàng)建一個該類的實例,然后創(chuàng)建一個線程處理CLIENT端的請求耿战。如果有多個客戶端同時請求該JSP文件蛋叼,則服務(wù)端會創(chuàng)建多個線程。每個客戶端請求對應(yīng)一個線程剂陡。以多線程方式執(zhí)行可大大降低對系統(tǒng)的資源需求,提高系統(tǒng)的并發(fā)量及響應(yīng)時間狈涮。、



四鸭栖、如何開發(fā)線程安全的Servlet

? ? ? 1歌馍、實現(xiàn) SingleThreadModel 接口?

  該接口指定了系統(tǒng)如何處理對同一個Servlet的調(diào)用。如果一個Servlet被這個接口指定,那么在這個Servlet中的service方法將不會有兩個線程被同時執(zhí)行晕鹊,當(dāng)然也就不存在線程安全的問題松却。這種方法只要將前面的Concurrent Test類的類頭定義更改為:

Public class Concurrent Test extends HttpServlet implements SingleThreadModel {?

…………?

}??

  2、同步對共享數(shù)據(jù)的操作?

  使用synchronized 關(guān)鍵字能保證一次只有一個線程可以訪問被保護(hù)的區(qū)段

3溅话、避免使用實例變量

  本實例中的線程安全問題是由實例變量造成的晓锻,只要在Servlet里面的任何方法里面都不使用實例變量,那么該Servlet就是線程安全的公荧。?




PS:

1) Struts2的Action是原型带射,非單實例的;會對每一個請求,產(chǎn)生一個Action的實例來處理循狰。?

Struts1 Action是單實例的窟社,spring mvc的controller也是如此。因此開發(fā)時要求必須是線程安全的绪钥,因為僅有Action的一個實例來處理所有的請求灿里。單例策略限制了Struts1 Action能作的事,并且要在開發(fā)時特別小心程腹。Action資源必須是線程安全的或同步的匣吊。

2) Struts1的Action,Spring的Ioc容器管理的bean 默認(rèn)是單實例的.

Spring的Ioc容器管理的bean 默認(rèn)是單實例的。

Struts2 Action對象為每一個請求產(chǎn)生一個實例,因此沒有線程安全問題色鸳。(實際上社痛,servlet容器給每個請求產(chǎn)生許多可丟棄的對象,并且不會導(dǎo)致性能和垃圾回收問題)命雀。

當(dāng)Spring管理Struts2的Action時蒜哀,bean默認(rèn)是單實例的,可以通過配置參數(shù)將其設(shè)置為原型吏砂。(scope="prototype )

五撵儿、servlet與jsp的區(qū)別

1.jsp經(jīng)編譯后就變成了Servlet.(JSP的本質(zhì)就是Servlet,JVM只能識別java的類狐血,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)

2.jsp更擅長表現(xiàn)于頁面顯示,servlet更擅長于邏輯控制.

3.Servlet中沒有內(nèi)置對象淀歇,內(nèi)置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到.Jsp是Servlet的一種簡化匈织,使用Jsp只需要完成程序員需要輸出到客戶端的內(nèi)容浪默,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成缀匕。而Servlet則是個完整的Java類浴鸿,這個類的Service方法用于生成對客戶端的響應(yīng)。

4.對于靜態(tài)HTML標(biāo)簽弦追,Servlet都必須使用頁面輸出流逐行輸出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市花竞,隨后出現(xiàn)的幾起案子劲件,更是在濱河造成了極大的恐慌,老刑警劉巖约急,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件零远,死亡現(xiàn)場離奇詭異,居然都是意外死亡厌蔽,警方通過查閱死者的電腦和手機(jī)牵辣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奴饮,“玉大人纬向,你說我怎么就攤上這事〈鞑罚” “怎么了逾条?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長投剥。 經(jīng)常有香客問我师脂,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任吃警,我火速辦了婚禮糕篇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酌心。我一直安慰自己拌消,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布谒府。 她就那樣靜靜地躺著拼坎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪完疫。 梳的紋絲不亂的頭發(fā)上泰鸡,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音壳鹤,去河邊找鬼盛龄。 笑死,一個胖子當(dāng)著我的面吹牛芳誓,可吹牛的內(nèi)容都是我干的余舶。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼锹淌,長吁一口氣:“原來是場噩夢啊……” “哼匿值!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赂摆,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤挟憔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烟号,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绊谭,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年汪拥,在試婚紗的時候發(fā)現(xiàn)自己被綠了达传。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡迫筑,死狀恐怖宪赶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铣焊,我是刑警寧澤逊朽,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站曲伊,受9級特大地震影響叽讳,放射性物質(zhì)發(fā)生泄漏追他。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一岛蚤、第九天 我趴在偏房一處隱蔽的房頂上張望邑狸。 院中可真熱鬧,春花似錦涤妒、人聲如沸单雾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硅堆。三九已至,卻和暖如春贿讹,著一層夾襖步出監(jiān)牢的瞬間渐逃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工民褂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留茄菊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓赊堪,卻偏偏與公主長得像面殖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哭廉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法脊僚,類相關(guān)的語法,內(nèi)部類的語法遵绰,繼承相關(guān)的語法吃挑,異常的語法,線程的語...
    子非魚_t_閱讀 31,599評論 18 399
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架街立,建立于...
    Hsinwong閱讀 22,363評論 1 92
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,805評論 0 11
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司埠通,掛了不少赎离,但最終還是拿到小米、百度端辱、阿里梁剔、京東、新浪舞蔽、CVTE荣病、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,218評論 11 349
  • 1998生于北方, 無華麗外表渗柿,卻心存善良个盆, 恰如老酒館角落慵懶的貓脖岛, 經(jīng)歷過世事薄涼依舊喜那一抹暖陽。 或許是偏...
    梔耳先生的樹與貓閱讀 535評論 1 9