servlet面試題及答案~02(簡單的servlet差不多就這些啦,明天jsp走起。留了一些問題,自己可以嘗試解答。)

0929

閱讀提示:

帶有*爲重點內容. 續上次0828servlet面試題01,鏈接如下

https://blog.csdn.net/qq_40703552/article/details/100129334

更正:06)get和post的區別

之前沒有錯,我還是感覺可以從凝練一下:

*1.從攜帶數據量上

*2.從請求參數的位置

*3.從用途上

4.安全性

5.從傳遞數據速度上.總結1.post帶有更多請求頭信息2.post需要確認.3post不會緩存4.post不能管道化傳輸(參考鏈接來自博客園 返回主頁迷途小哈https://www.cnblogs.com/strayling/p/3580048.html)

思考get與post如何解決亂碼?

拓展:07)servlet的兩個重要的API

HttpServletRequest(與請求有關)與HttpServletResponse(與響應有關)

如何從頁面獲取參數,有幾種方式

1.獲取指定參數的單個值:getParamater(String name)

2.獲取指定參數的多個值 getParamaterValues(String name)

3.獲取整個參數列表 getParamaterMap()

09)tomcat容器是如何創建servlet類實例?用到了什麼原理

簡單說一下,具體的話.自己搜一下嗎,別太懶哦.

當容器啓動時,tomcat會讀取webapps下的web.xml文件.對其進行解析,讀取器servlet的信息,並將其加載實例化.

是否一開始實例化取決於 數字越小,啓動越早

10)servlet的安全性問題

由於servlet是單例的,多個用戶訪問servlet的時候,servlet會爲每一個用戶創建一個線程.當多個用戶訪問同一個資源時,就可能出現安全問題.

原則

1.如果該資源被共享的話,需要加同步機制sychronized(this){}

2.否則的話,直接定義在doGet,doPost即可

注:多線程的併發的讀寫servlet類屬性會導致數據不同步.但是如果只是併發的讀取屬性而不寫入,則不存在數據不同步的問題.因此servlet的只讀屬性最好定義爲final類型的.

11)Request對象的主要方法包括哪些?(借鑑了一下)

如果面試真的問你這個問題的話.可以從從三個角度來談.我只說重要的,其他的直接你看看api就行拉.你要相信真有奇葩的面試題.哈哈.

1.request操作請求行的方法

String getMethod() 判斷請求方式

String getContextPath() 該方法用於獲取請求URL中屬於WEB應用程序的路徑,這個路徑以“/”開頭,表示相對於整個WEB站點的根目錄,路徑結尾不含“/”。如果請求URL屬於WEB站點的根目錄,那麼返回結果爲空字符串("")動態獲取項目名稱。例如:/day12

String getRemoteAddr() 該方法用於獲取請求客戶端的IP地址

2.request操作請求頭的方法

方法聲明 功能描述
String getHeader(String name) 該方法用於獲取一個指定頭字段的值,如果請求消息中沒有包含指定的頭字段,getHeader()方法返回null;如果請求消息中包含有多個指定名稱的頭字段,getHeader()方法返回其中第一個頭字段的值
Enumeration getHeaders(String name) 該方法返回一個Enumeration集合對象,該集合對象由請求消息中出現的某個指定名稱的所有頭字段值組成。在多數情況下,一個頭字段名在請求消息中只出現一次,但有時候可能會出現多次
Enumeration getHeaderNames() 該方法用於獲取一個包含所有請求頭字段的Enumeration對象
int getIntHeader(String name) 該方法用於獲取指定名稱的頭字段,並且將其值轉爲int類型。需要注意的是,如果指定名稱的頭字段不存在,返回值爲-1;如果獲取到的頭字段的值不能轉爲int類型,將發生NumberFormatException異常
Long getDateHeader(String name) 該方法用於獲取指定頭字段的值,並將其按GMT時間格式轉換成一個代表日期/時間的長整數,這個長整數是自1970年1月1日0點0分0秒算起的以毫秒爲單位的時間值

3.request操作請求頭的方法

存數據:setAttribute(name,value)

取數據:getAttribute(name)

刪除數據:removeAttribute(name)

12)servlet的查詢結果用如何保存(保存在什麼作用域?)

使用ServletContext作用域

存在問題:所有的Servelt都共享這一個域,就會造成數據衝突的問題

解決:縮小作用範圍 域對象 request 作用域

13)request的作用:

1、request可以封裝請求行、頭、體的信息

2、也可以當成域對象

而作爲域對象的三個方法:

存數據:setAttribute(name,value)

取數據:getAttribute(name)

刪除數據:removeAttribute(name)

作用範圍:

一次請求有效

延伸:

看完這兩天的內容.下面幾個問題看看能不能回想起來?

1、說一說Servlet的生命週期?

2、JAVA SERVLET API中forward() 與redirect()的區別

3.什麼情況下調用doGet()和doPost()?

4.Servlet執行時一般實現哪幾個方法?

這下面5個問題比上有點難度.當然還是基礎.試着自己去整理思考一下.不會的小夥伴私信我哦.最好能獨立完成.當然有哪位小夥伴留言也行.

1.Servlet的基本架構代碼片斷是什麼?

2.如何現實servlet的單線程模式?

3.頁面間對象傳遞的方法是什麼?

4.四種會話跟蹤技術包括哪幾項?

5.我們在web應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?

考考之前你所學的哦

1.說出數據連接池的工作機制是什麼?
2.Class.forName的作用?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章