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