servlet面试常考 (转载)
????????????
- 編輯???????????????????????? ????????????????????
- 刪除???????????????????????? ????????????????????
1、說一說Servlet生命周期(非常重要)
Servlet生命周期包括三部分:
初始化:Web容器加載servlet,調(diào)用init()方法
處理請求:當(dāng)請求到達(dá)時,運行其service()方法。service()自動派遣運行與請求相對應(yīng)的doXXX(doGet或者doPost)方法。
銷毀:服務(wù)結(jié)束,web容器會調(diào)用servlet的distroy()方法銷毀servlet。
2、get提交和post提交有何區(qū)別
(1)get一般用于從服務(wù)器上獲取數(shù)據(jù),post一般用于向服務(wù)器傳送數(shù)據(jù)
(2)請求的時候參數(shù)的位置有區(qū)別,get的參數(shù)是拼接在url后面,用戶在瀏覽器地址欄可以看到。post是放在http包的包體中。
比如說用戶注冊,你不能把用戶提交的注冊信息用get的方式吧,那不是說把用戶的注冊信息都顯示在Url上了嗎,是不安全的。
(3)能提交的數(shù)據(jù)有區(qū)別,get方式能提交的數(shù)據(jù)只能是文本,且大小不超過1024個字節(jié),而post不僅可以提交文本還有二進(jìn)制文件。
所以說想上傳文件的話,那我們就需要使用post請求方式
(4)servlet在處理請求的時候分別對應(yīng)使用doGet和doPost方式進(jìn)行處理請求
3、JSP與Servlet有什么區(qū)別
Servlet是服務(wù)器端的程序,動態(tài)生成html頁面發(fā)送到客戶端,但是這樣程序里會有很多out.println(),java與html語言混在一起
很亂,所以后來sun公司推出了JSP.其實JSP就是Servlet,每次運行的時候JSP都首先被編譯成servlet文件,然后再被編譯成
.class文件運行。有了jsp,在MVC項目中servlet不再負(fù)責(zé)動態(tài)生成頁面,轉(zhuǎn)而去負(fù)責(zé)控制程序邏輯的作用,控制jsp與javabean
之間的流轉(zhuǎn)。
4、doGet與doPost方法的兩個參數(shù)是什么
HttpServletRequest:封裝了與請求相關(guān)的信息
HttpServletResponse:封裝了與響應(yīng)相關(guān)的信息
5、request.getAttribute()和request.getParameter
(1)有setAttribute,沒有setParameter方法
(2)getParameter獲取到的值只能是字符串,不可以是對象,而getAttribute獲取到的值是Object類型的。
(3)通過form表單或者url來向另一個頁面或者servlet傳遞參數(shù)的時候需要用getParameter獲取值;getAttribute只能獲取setAttribute的值
(4)setAttribute是應(yīng)用服務(wù)器把這個對象放到該頁面所對應(yīng)的一塊內(nèi)存當(dāng)中,當(dāng)你的頁面服務(wù)器重定向到另一個頁面的時候,應(yīng)用服務(wù)器
會把這塊內(nèi)存拷貝到另一個頁面對應(yīng)的內(nèi)存當(dāng)中。通過getAttribute可以取得你存下的值,當(dāng)然這種方法可以用來傳對象。
用session也是一樣的道理,這是說request和session的生命周期不一樣而已。
6、JSP有哪些內(nèi)置對象,作用是什么?(非常重要)
?
| 名稱 | 作用 |
| request | 包含用戶端請求的信息 |
| response | 包含服務(wù)器傳回客戶端的響應(yīng)信息 |
| session | 與請求有關(guān)的會話期 |
| pageContext | 管理網(wǎng)頁屬性 |
| application | 服務(wù)器啟動時創(chuàng)建,服務(wù)器關(guān)閉時停止,為多個應(yīng)用程序保存信息 |
| out | 向客戶端輸出數(shù)據(jù) |
| config | servlet的架構(gòu)部件 |
| page | 指網(wǎng)頁本身 |
| exception | 針對錯誤頁面才可使用 |
7、四種會話跟蹤技術(shù)作用域
(1)page:一個頁面
(2)request::一次請求
(3)session:一次會話
(4)application:服務(wù)器從啟動到停止。
8、JSP中動態(tài)INCLUDE和靜態(tài)INCLUDE有什么區(qū)別(非常重要)
include指令用于把另一個頁面包含到當(dāng)前頁面中,在什么時候包含的?再轉(zhuǎn)換成servlet的時候包含進(jìn)去的。
動態(tài)INCLUDE用jsp:include動作實現(xiàn) <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,
并且可以帶參數(shù).
靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面<%@ include file="included.htm" %>
9、forward和redirect的區(qū)別(非常重要)
轉(zhuǎn)發(fā)與重定向
(1)從地址欄顯示來說?
forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送
的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址.redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是
新的URL.
(2)從數(shù)據(jù)共享來說?
forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù).
redirect:不能共享數(shù)據(jù).
(3)從運用地方來說?
forward:一般用于用戶登陸的時候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊.
redirect:一般用于用戶注銷登陸時返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等.
(4)從效率來說?
forward:高.
redirect:低.
轉(zhuǎn)載于:https://www.cnblogs.com/HongDunLaoGui/p/7780751.html
總結(jié)
以上是生活随笔為你收集整理的servlet面试常考 (转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error C1853: “Debug\
- 下一篇: WinCC归档数据报表控件