更新時(shí)間:2022-12-13 16:46:51 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1240次
1、說(shuō)一說(shuō)Servlet生命周期
Servlet生命周期包括三部分:
初始化:Web容器加載servlet,調(diào)用init()方法
處理請(qǐng)求:當(dāng)請(qǐng)求到達(dá)時(shí),運(yùn)行其service()方法。service()自動(dòng)派遣運(yùn)行與請(qǐng)求相對(duì)應(yīng)的doXXX(doGet或者doPost)方法。
銷(xiāo)毀:服務(wù)結(jié)束,web容器會(huì)調(diào)用servlet的distroy()方法銷(xiāo)毀servlet。
2、get提交和post提交有何區(qū)別
(1)get一般用于從服務(wù)器上獲取數(shù)據(jù),post一般用于向服務(wù)器傳送數(shù)據(jù)
(2)請(qǐng)求的時(shí)候參數(shù)的位置有區(qū)別,get的參數(shù)是拼接在url后面,用戶(hù)在瀏覽器地址欄可以看到。post是放在http包的包體中。
比如說(shuō)用戶(hù)注冊(cè),你不能把用戶(hù)提交的注冊(cè)信息用get的方式吧,那不是說(shuō)把用戶(hù)的注冊(cè)信息都顯示在Url上了嗎,是不安全的。
(3)能提交的數(shù)據(jù)有區(qū)別,get方式能提交的數(shù)據(jù)只能是文本,且大小不超過(guò)1024個(gè)字節(jié),而post不僅可以提交文本還有二進(jìn)制文件。
所以說(shuō)想上傳文件的話,那我們就需要使用post請(qǐng)求方式
(4)servlet在處理請(qǐng)求的時(shí)候分別對(duì)應(yīng)使用doGet和doPost方式進(jìn)行處理請(qǐng)求
3、JSP與Servlet有什么區(qū)別
Servlet是服務(wù)器端的程序,動(dòng)態(tài)生成html頁(yè)面發(fā)送到客戶(hù)端,但是這樣程序里會(huì)有很多out.println(),java與html語(yǔ)言混在一起
很亂,所以后來(lái)sun公司推出了JSP.其實(shí)JSP就是Servlet,每次運(yùn)行的時(shí)候JSP都首先被編譯成servlet文件,然后再被編譯成
.class文件運(yùn)行。有了jsp,在MVC項(xiàng)目中servlet不再負(fù)責(zé)動(dòng)態(tài)生成頁(yè)面,轉(zhuǎn)而去負(fù)責(zé)控制程序邏輯的作用,控制jsp與javabean
之間的流轉(zhuǎn)。
4、doGet與doPost方法的兩個(gè)參數(shù)是什么
HttpServletRequest:封裝了與請(qǐng)求相關(guān)的信息
HttpServletResponse:封裝了與響應(yīng)相關(guān)的信息
5、request.getAttribute()和request.getParameter
(1)有setAttribute,沒(méi)有setParameter方法
(2)getParameter獲取到的值只能是字符串,不可以是對(duì)象,而getAttribute獲取到的值是Object類(lèi)型的。
(3)通過(guò)form表單或者url來(lái)向另一個(gè)頁(yè)面或者servlet傳遞參數(shù)的時(shí)候需要用getParameter獲取值;getAttribute只能獲取setAttribute的值
(4)setAttribute是應(yīng)用服務(wù)器把這個(gè)對(duì)象放到該頁(yè)面所對(duì)應(yīng)的一塊內(nèi)存當(dāng)中,當(dāng)你的頁(yè)面服務(wù)器重定向到另一個(gè)頁(yè)面的時(shí)候,應(yīng)用服務(wù)器
會(huì)把這塊內(nèi)存拷貝到另一個(gè)頁(yè)面對(duì)應(yīng)的內(nèi)存當(dāng)中。通過(guò)getAttribute可以取得你存下的值,當(dāng)然這種方法可以用來(lái)傳對(duì)象。
用session也是一樣的道理,這是說(shuō)request和session的生命周期不一樣而已。
6、JSP有哪些內(nèi)置對(duì)象,作用是什么?
名稱(chēng) | 作用 |
request | 包含用戶(hù)端請(qǐng)求的信息 |
response | 包含服務(wù)器傳回客戶(hù)端的響應(yīng)信息 |
session | 與請(qǐng)求有關(guān)的會(huì)話期 |
pageContext | 管理網(wǎng)頁(yè)屬性 |
application | 服務(wù)器啟動(dòng)時(shí)創(chuàng)建,服務(wù)器關(guān)閉時(shí)停止,為多個(gè)應(yīng)用程序保存信息 |
out | 向客戶(hù)端輸出數(shù)據(jù) |
config | servlet的架構(gòu)部件 |
page | 指網(wǎng)頁(yè)本身 |
exception | 針對(duì)錯(cuò)誤頁(yè)面才可使用 |
7、四種會(huì)話跟蹤技術(shù)作用域
(1)page:一個(gè)頁(yè)面
(2)request::一次請(qǐng)求
(3)session:一次會(huì)話
(4)application:服務(wù)器從啟動(dòng)到停止。
7、JSP中動(dòng)態(tài)INCLUDE和靜態(tài)INCLUDE有什么區(qū)別
include指令用于把另一個(gè)頁(yè)面包含到當(dāng)前頁(yè)面中,在什么時(shí)候包含的?再轉(zhuǎn)換成servlet的時(shí)候包含進(jìn)去的。
動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn) 它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁(yè)面,
并且可以帶參數(shù).
靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁(yè)面<%@ include file="included.htm" %>
8、forward和redirect的區(qū)別
轉(zhuǎn)發(fā)與重定向
(1)從地址欄顯示來(lái)說(shuō)
forward是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問(wèn)目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過(guò)來(lái),然后把這些內(nèi)容再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送
的內(nèi)容從哪里來(lái)的,所以它的地址欄還是原來(lái)的地址.redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址.所以地址欄顯示的是
新的URL.
(2)從數(shù)據(jù)共享來(lái)說(shuō)
forward:轉(zhuǎn)發(fā)頁(yè)面和轉(zhuǎn)發(fā)到的頁(yè)面可以共享request里面的數(shù)據(jù).
redirect:不能共享數(shù)據(jù).
(3)從運(yùn)用地方來(lái)說(shuō)
forward:一般用于用戶(hù)登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊.
redirect:一般用于用戶(hù)注銷(xiāo)登陸時(shí)返回主頁(yè)面和跳轉(zhuǎn)到其它的網(wǎng)站等.
(4)從效率來(lái)說(shuō)
forward:高.
redirect:低.
以上就是“servlet面試題的最新歸納”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743