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

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

生活随笔

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

编程问答

Servlet面试题整理

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

Servlet和JSP面試題整理

1. forward和redirect的區(qū)別?

  • 地址欄顯示不同,forward地址欄顯示的是原來(lái)的地址,因?yàn)槠涫怯煞?wù)器請(qǐng)求資源,直接訪問(wèn)目標(biāo)地址的URL,并讀取響應(yīng)內(nèi)容,然后將內(nèi)容發(fā)送至瀏覽器,瀏覽器并不知道目標(biāo)地址。redirect顯示的是新的URL,因?yàn)槠涫莻€(gè)是服務(wù)器根據(jù)邏輯發(fā)送狀態(tài)碼至瀏覽器,讓瀏覽器重新請(qǐng)求目標(biāo)地址,所以瀏覽器是知道目標(biāo)地址的。
  • 數(shù)據(jù)共享方式不同,forward轉(zhuǎn)發(fā)頁(yè)面和目標(biāo)頁(yè)面均可共享request的數(shù)據(jù)。redirect則是不可以共享數(shù)據(jù)。
  • 通常應(yīng)用的場(chǎng)景不同,forward一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊。redirect一般用于用戶注銷(xiāo)登陸時(shí)返回主頁(yè)面和跳轉(zhuǎn)到其它的網(wǎng)站等
  • 效率不同,通常認(rèn)為forward的效率要更高

2. session和cookie有什么區(qū)別?

  • cookie可以被客戶端禁用,但是客戶端無(wú)法禁用服務(wù)端的session。
  • 存儲(chǔ)的對(duì)象不同,session能夠存儲(chǔ)任意的Java對(duì)象,cookie只能存儲(chǔ)String類(lèi)型的對(duì)象。
  • 數(shù)據(jù)存儲(chǔ)的地址不同,cookie數(shù)據(jù)保存在客戶端,session數(shù)據(jù)保存在服務(wù)器端

3. Servlet有什么優(yōu)點(diǎn)?

  • 可移植性好
    Servlet是用Java語(yǔ)言編寫(xiě)的,因此它可以移植到不同的操作系統(tǒng)和服務(wù)器上。
  • 安全性好
    Servlet也具有類(lèi)型檢查特征,并利用Java的垃圾收集和沒(méi)有指針的設(shè)計(jì),使得Servlet避免了內(nèi)存管理等問(wèn)題。
  • 高效性
    Servlet加載執(zhí)行后會(huì)常駐服務(wù)器內(nèi)存中,當(dāng)再次受到客戶端的請(qǐng)求時(shí),服務(wù)器會(huì)產(chǎn)生新的線程而不是進(jìn)程為客戶端服務(wù),這樣就提高了響應(yīng)速度。

4. 對(duì)Servlet線程安全的理解

  • 客戶端第一次請(qǐng)求Servlet的時(shí),tomcat會(huì)根據(jù)web.xml配置文件實(shí)例化servlet,當(dāng)又有一個(gè)客戶端訪問(wèn)該servlet的時(shí)候,不會(huì)再實(shí)例化該servlet,這就是JSP/Servlet容器默認(rèn)采用的單實(shí)例多線程(這是造成線程安全的主因)處理多個(gè)請(qǐng)求的方式。
  • Servlet本身是無(wú)狀態(tài)的,一個(gè)無(wú)狀態(tài)的Servlet是絕對(duì)線程安全的,所以servlet是否線程安全是由它的實(shí)現(xiàn)來(lái)決定的,如果它內(nèi)部的屬性或方法會(huì)被多個(gè)線程改變,它就是線程不安全的,反之,就是線程安全的。
  • 避免使用實(shí)例變量 ,避免使用非線程安全的集合,在多個(gè)Servlet中對(duì)某個(gè)外部對(duì)象(例如文件)的修改是務(wù)必加鎖,互斥訪問(wèn),都能夠提高線程安全性。

5. Servlet的生命周期

  • 當(dāng)客戶端第一次請(qǐng)求Servlet時(shí),Servlet被加載到內(nèi)存中,容器會(huì)創(chuàng)建Servlet實(shí)例,并調(diào)用其init()方法進(jìn)行初始化工作。
  • 容器創(chuàng)建請(qǐng)求對(duì)象和響應(yīng)對(duì)象,然后調(diào)用Servlet的service()方法為客戶端提供服務(wù)。
  • 當(dāng)Servlet不再被需要時(shí),容器調(diào)用Servlet的destory()方法將Servlet實(shí)例銷(xiāo)毀。
  • 注: 當(dāng)客戶端請(qǐng)求的Servlet已經(jīng)存在于服務(wù)器內(nèi)存時(shí),容器會(huì)創(chuàng)建新的線程調(diào)用service()方法響應(yīng)客戶端請(qǐng)求。在Servlet的整個(gè)生命周期中,init()方法和destory()方法只會(huì)被調(diào)用一次。

6. JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

  • 動(dòng)態(tài)INCLUDE 用jsp:include動(dòng)作實(shí)現(xiàn)它總是會(huì)檢查所含文件中的變化,并且可以帶參數(shù),適合用于包含動(dòng)態(tài)頁(yè)面。
  • 靜態(tài)INCLUDE 用include偽碼實(shí)現(xiàn),不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁(yè)面。

7. get和post有何區(qū)別?

  • get參數(shù)傳遞通過(guò)url,post放在resquest body中
  • get請(qǐng)求參數(shù)有長(zhǎng)度限制,post沒(méi)有
  • get不安全,因?yàn)閰?shù)暴露在url中。post安全,參數(shù)是隱藏的
  • get請(qǐng)求只能進(jìn)行url編碼。post支持多種編碼
  • get請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽歷史記錄,而post不會(huì)被保留。
  • get產(chǎn)生一個(gè)tcp數(shù)據(jù)包;post產(chǎn)生兩個(gè)tcp數(shù)據(jù)包。
  • get和post本質(zhì)就是tcp鏈接,并無(wú)差別。但是由于HTTP的規(guī)定和瀏覽器/服務(wù)器的限制,導(dǎo)致他們?cè)趹?yīng)用過(guò)程中體現(xiàn)出一些不同。

總結(jié)

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

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