2019年Java面試題(九) Servlet 2019-04-27

1. Servlet的生命周期

答:

? ? ? 分為 5 個階段:加載蒂教、創(chuàng)建、初始化畴嘶、處理客戶請求蛋逾、卸載。

①窗悯、加載:容器通過類加載器使用 Servlet 類對應(yīng)的文件加載 servlet区匣;

②、創(chuàng)建:通過調(diào)用 Servlet 構(gòu)造函數(shù)創(chuàng)建一個 Servlet 實例蒋院;

③亏钩、初始化:調(diào)用 init() 方法初始化;

④欺旧、處理客戶請求:每當有一個客戶請求姑丑,容器會創(chuàng)建一個新的線程來處理客戶請求(調(diào)用 service() 方法來響應(yīng)客戶請求,service() 方法會根據(jù)請求的 method 屬性來調(diào)用 doGet() & doPost() 方法)

⑤辞友、卸載:容器在卸載 Servlet 之前栅哀,需要調(diào)用 destroy() 方法讓 Servlet 自己釋放其占用的資源。

2. 如何現(xiàn)實servlet的單線程模式

<%@ page isThreadSafe=”false”%>

3. JAVA SERVLET API中forward() 與redirect()的區(qū)別称龙?

forward是服務(wù)器請求資源留拾,服務(wù)器直接訪問目標地址的URL,把那個URL的響應(yīng)內(nèi)容讀取過來鲫尊,然后把這些內(nèi)容再發(fā)給瀏覽器痴柔,其實客戶端瀏覽器只發(fā)了一次請求,所以它的地址欄中還是原來的地址马昨,session,request參數(shù)都可以獲取竞帽。

redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,相當于客戶端瀏覽器發(fā)送了兩次請求鸿捧。

4. 過濾器的作用

答:

可以驗證客戶是否來自可信的網(wǎng)絡(luò)屹篓,可以對客戶提交的數(shù)據(jù)進行重新編碼,可以從系統(tǒng)里獲得配置的信息匙奴,可以過濾 掉客戶的某些不應(yīng)該出現(xiàn)的詞匯堆巧,可以驗證用戶是否登錄,可以驗證客戶的瀏覽器是否支持當前的應(yīng)用泼菌,可以記錄 系統(tǒng)的日志等等谍肤。

5. 過濾器的用法

答:

首先要實現(xiàn)(implements)Filter 接口,同時覆蓋Filter 接口的三個方法:

init(FilterConfig config) //用于獲得FilterConfig 對象哗伯;

doFilter(ServletRequest request, ServletResponse response,FilterChain chain) //進行過濾處理一些業(yè)務(wù)荒揣;

destroy() //銷毀Filter。

6. 過濾器和監(jiān)聽器的區(qū)別

答:

過濾器Filter是實現(xiàn)了javax.servlet.Filter接口的服務(wù)器端程序焊刹,監(jiān)聽器Listener是實現(xiàn)了 javax.servlet.ServletContextListener 接口的服務(wù)器端程序

都是隨web應(yīng)用的啟動而啟動系任,只初始化一次恳蹲,隨web應(yīng)用的停止而銷毀

過濾器攔截指定的請求,監(jiān)聽器偵聽指定的動作

7. 轉(zhuǎn)發(fā)和重定向的區(qū)別

答:轉(zhuǎn)發(fā)是服務(wù)器端跳轉(zhuǎn)俩滥,地址欄地址不改變嘉蕾,客戶端向服務(wù)器發(fā)送一次請求,重定向是客戶端跳轉(zhuǎn)霜旧,地址欄地址發(fā)生改 變错忱,向服務(wù)器發(fā)送兩次請求

8. POST和GET的區(qū)別

答:

1、GET請求挂据,請求的數(shù)據(jù)會附加在URL之后以清,以?分割URL和傳輸數(shù)據(jù),多個參數(shù)用&連接棱貌。URL的編碼格式采用的是ASCII編碼玖媚,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸婚脱。

POST請求:POST請求會把請求的數(shù)據(jù)放置在HTTP請求包的包體中今魔。上面的item=bandsaw就是實際的傳輸數(shù)據(jù)。

因此障贸,GET請求的數(shù)據(jù)會暴露在地址欄中错森,而POST請求則不會。

2篮洁、傳輸數(shù)據(jù)的大小

在HTTP規(guī)范中涩维,沒有對URL的長度和傳輸?shù)臄?shù)據(jù)大小進行限制。但是在實際開發(fā)過程中袁波,對于GET瓦阐,特定的瀏覽器和服務(wù)器對URL的長度有限制。因此篷牌,在使用GET請求時睡蟋,傳輸數(shù)據(jù)會受到URL長度的限制。

對于POST枷颊,由于不是URL傳值戳杀,理論上是不會受限制的,但是實際上各個服務(wù)器會規(guī)定對POST提交數(shù)據(jù)大小進行限制夭苗,Apache信卡、IIS都有各自的配置。

3题造、安全性

POST的安全性比GET的高傍菇。這里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全界赔,上面提到的安全僅僅是不修改服務(wù)器的數(shù)據(jù)丢习。比如须妻,在進行登錄操作,通過GET請求泛领,用戶名和密碼都會暴露再URL上,因為登錄頁面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因敛惊,此時的用戶名和密碼就很容易被他人拿到了渊鞋。除此之外,GET請求提交的數(shù)據(jù)還可能會造成Cross-site request frogery攻擊

4瞧挤、HTTP中的GET锡宋,POST,SOAP協(xié)議都是在HTTP上運行的

9. doGet()方法和doPost()方法有什么區(qū)別特恬?

doGet:GET方法會把名值對追加在請求的URL后面执俩。因為URL對字符數(shù)目有限制,進而限制了用在客戶端請求的參數(shù)值的數(shù)目癌刽。并且請求中的參數(shù)值是可見的役首,因此,敏感信息不能用這種方式傳遞显拜。

doPOST:POST方法通過把請求參數(shù)值放在請求體中來克服GET方法的限制衡奥,因此,可以發(fā)送的參數(shù)的數(shù)目是沒有限制的远荠。最后矮固,通過POST請求傳遞的敏感信息對外部客戶端是不可見的。

10. sendRedirect()和forward()方法有什么區(qū)別譬淳?

sendRedirect()方法會創(chuàng)建一個新的請求档址,而forward()方法只是把請求轉(zhuǎn)發(fā)到一個新的目標上。重定向(redirect)以后邻梆,之前請求作用域范圍以內(nèi)的對象就失效了守伸,因為會產(chǎn)生一個新的請求,而轉(zhuǎn)發(fā)(forwarding)以后确虱,之前請求作用域范圍以內(nèi)的對象還是能訪問的含友。一般認為sendRedirect()比forward()要慢。

11. 什么是MVC

答:MVC是一種設(shè)計模式校辩,即model(模型)窘问、view(視圖)、control(控制)分離設(shè)計宜咒;這是目前WEB 應(yīng)用服務(wù)系統(tǒng) 的主流設(shè)計方向惠赫。

Model:即處理業(yè)務(wù)邏輯的模塊,每一種處理一個模塊故黑;

View:負責頁面顯示儿咱,顯示MODEL 處理結(jié)果給用戶庭砍,主要實現(xiàn)數(shù)據(jù)到頁面轉(zhuǎn)換過程;

Control:負責每個請求的分發(fā)混埠,把FORM 數(shù)據(jù)傳遞給MODEL 處理怠缸,把處理結(jié)果的數(shù)據(jù)傳遞給VIEW 顯示。

12. 解釋一下mvc 以及熟悉的mvc 框架

MVC 是Model-View-Controller 的簡寫钳宪。Model 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean揭北,EJB 組件實現(xiàn)), View 是應(yīng)用的表示層(由JSP吏颖、HTML搔体、各種Taglib 等組成),Controller 是提供應(yīng)用程序的中心控制處理半醉。通過這種設(shè)計模型把應(yīng)用邏輯疚俱,處理過程和顯示邏輯分成不同的組件實現(xiàn),這些組件可以進行交互和重用缩多,另外有利于維護呆奕。Struts1、Struts2瞧壮、Spring MVC登馒、WebWork 等這些都是屬于基于MVC 模式實現(xiàn)的框架

13. Tomcat,apache咆槽,jboss的區(qū)別

Tomcat是servlet容器陈轿,用于解析jsp,servlet秦忿。是一個輕量級的高效的容器麦射;缺點是不支持EJB,只能用于Java應(yīng)用灯谣。

Apache是http服務(wù)器(web服務(wù)器)潜秋,類似于IIS可以用來建立虛擬站點,編譯處理靜態(tài)頁面胎许。支持SSL技術(shù)峻呛,支持多個虛擬主機等功能。

Jboss是應(yīng)用服務(wù)器辜窑,運行EJB的javaee應(yīng)用服務(wù)器钩述,遵循javaee規(guī)范,能夠提供更多平臺的支持和更多集成功能穆碎,如數(shù)據(jù)庫連接牙勘,JCA等。其對servlet的支持是通過集成其他servlet容器來實現(xiàn)的所禀。如tomcat方面。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末放钦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恭金,更是在濱河造成了極大的恐慌操禀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件横腿,死亡現(xiàn)場離奇詭異床蜘,居然都是意外死亡,警方通過查閱死者的電腦和手機蔑水,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扬蕊,“玉大人搀别,你說我怎么就攤上這事∥惨郑” “怎么了歇父?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長再愈。 經(jīng)常有香客問我榜苫,道長,這世上最難降的妖魔是什么翎冲? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任垂睬,我火速辦了婚禮,結(jié)果婚禮上抗悍,老公的妹妹穿的比我還像新娘驹饺。我一直安慰自己,他們只是感情好缴渊,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布赏壹。 她就那樣靜靜地躺著,像睡著了一般衔沼。 火紅的嫁衣襯著肌膚如雪蝌借。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天指蚁,我揣著相機與錄音菩佑,去河邊找鬼。 笑死欣舵,一個胖子當著我的面吹牛擎鸠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缘圈,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼劣光,長吁一口氣:“原來是場噩夢啊……” “哼袜蚕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绢涡,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤牲剃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雄可,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凿傅,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年数苫,在試婚紗的時候發(fā)現(xiàn)自己被綠了聪舒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡虐急,死狀恐怖箱残,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情止吁,我是刑警寧澤被辑,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站敬惦,受9級特大地震影響盼理,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烈菌。 院中可真熱鬧,春花似錦举哟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秽褒,卻和暖如春壶硅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背销斟。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工庐椒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚂踊。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓约谈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棱诱,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349