java面试常考_JAVA面试常考系列十
JAVA面試常考系列十
題目一
Servlet是什么?
Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,是用Java編寫的服務器端程序,主要的作用是處理客戶端請求并生成動態Web內容。
一般情況下,Servlet主要用于處理或者存儲由HTML表單提交的數據,提供動態內容并管理狀態信息。
題目二
Applet和Servlet有什么區別?
Applet是客戶端Java程序,Servlet是服務器端組件。
Applet運行在客戶機上的Web瀏覽器中,Servlet運行在Web服務器上。
Applet可以使用用戶接口類,servlet沒有用戶接口,等待客戶端的HTTP請求,并在每個請求中產生一個響應。
題目三
GenericServlet和HttpServlet有什么區別?
HttpServlet是GenericServlet的子類。
GenericServlet是個抽象類,必須給出子類才能實例化。它給出了設計servlet的一些架構,定義了servlet生命周期,以及一些得到名字、配置、初始化參數的方法,其設計的是和應用層協議無關的。
HttpServlet是子類,所以具有GenericServlet的一切特性,還添加了doGet, doPost, doDelete, doPut, doTrace等方法用來處理http協議里命令的請求響應過程。
題目四
一個Servlet在生命周期中經歷了哪些過程?
Servlet 在加載之后依次經歷了實例化、服務、銷毀三個過程。
init()
在服務器裝入Servlet時,將會執行init()方法,目的是為了初始化Servlet對象。也可以通過配置服務器,在啟動服務器或客戶機首次訪問Servlet時裝入Servlet。Init()方法在整個生命周期中,僅僅執行一次,與訪問Servlet的客戶機數量無關。
service()
負責響應客戶的請求,是Servlet的核心。當一個客戶請求一個HttpServlet對象時,對象就會調用Service()方法,并傳遞給方法一個請求對象和一個響應對象作為參數。Service()方法在HttpServlet中已存在,默認的服務功能是調用與HTTP請求的方法相應的do功能。
destroy()
在服務器端停止且卸載Servlet時執行該方法,用來釋放占用的資源。一個Servlet在運行service()方法時可能會產生其他的線程,所以在調用destroy()方法時,需要確認這些線程已經終止或完成。與init()方法一樣,整個生命周期中,僅執行一次。
題目五
doGet()和doPost()有什么區別?
區別一
get是從服務器上獲取數據,post是向服務器傳送數據。
區別二
get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。過程對用戶不可見。
區別三
對于get方式,服務器端用Request.QueryString獲取變量的值,對于post方式,服務器端用Request.Form獲取提交的數據。
區別四
get傳送的數據量較小,不能大于2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
區別五
get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
題目六
什么是服務器端包含(SSI)?
服務端包含(SSI)是一種簡單的解釋型服務端腳本語言,多數情況下只用在Web上,用servlet標簽嵌入。SSI最常用的場景把一個或多個文件包含到Web服務器的一個Web頁面中。當瀏覽器訪問Web頁面的時候,Web服務器會用對應的servlet產生的文本來替換Web頁面中的servlet標簽。
題目七
什么是ServletChaining?
ServletChaining是一種傳輸方法,用來把一個Servlet的輸出發送給另一個Servlet。第二個Servlet的輸出可以發送給第三個Servlet,依次循環。鏈末端Servlet負責把響應發送給客戶端。
題目八
如何找出當前向你請求servlet的客戶機?
ServletRequest類具有查找客戶機的IP地址或主機名的功能。
getRemoteAddr()獲取客戶機的IP地址。
getRemoteHost()獲取客戶機的主機名。
題目九
HTTP響應的結構是什么?
HTTP響應由三部分組成:
狀態代碼:描述響應的狀態。它可以用來檢查請求是否已經成功完成。在請求失敗的情況下,狀態碼可以用來找出失敗的原因。如果您的servlet沒有返回狀態碼,則默認返回成功狀態碼HttpServletResponse.SC_OK。
HTTP標頭:它們包含更多關于響應的信息。例如,標題可以指定響應被視為陳舊的日期/時間,或用于安全地將實體傳送給用戶的編碼形式。
Body:它包含響應的內容。正文可能包含HTML代碼,圖像等。主體由緊接在標題之后的HTTP事務消息中傳輸的數據字節組成。
題目十
sendRedirect和forward方法有什么區別?
區別一
sendRedirect方法可以定位到同一個web站點的其他應用,甚至可以通過傳入絕對路徑定位到別的web站點。forward方法只能轉發給同一個web站點的資源。
區別二
sendRedirect轉發后,瀏覽器url地址變為目的url地址。forward重定向后,瀏覽器url地址不變。
區別三
使用sendRedirect轉發的過程,瀏覽器先向目的Servlet發送一次請求,Servlet看到sendRedirect將目的url返回到瀏覽器,瀏覽器再去請求目的url,目的url再返回response到瀏覽器。瀏覽器和服務器兩次請求響應。
使用forward重定向的過程,是瀏覽器先向目的Servlet發送一次Request請求,然后再服務器端由Servlet再將請求發送到目的url,再由服務器端Servlet返回Response到瀏覽器端。瀏覽器和服務器一次請求響應。
區別四
sendRedirect方法由于兩次瀏覽器服務器請求,所以有兩個Request和Response。
forward方法的調用者與被調用者之間共享Request和Response。
完
程序員面試】是IT求職神器,提供海量C++、JAVA、前端等職業筆試題庫,在線進行一線互聯網名企筆試面試模擬考試練習,天天刷題,和牛人一起討論經典試題,全面提升你的編程能力,海量高薪職位信息等著你!永遠為下個月離職做好準備!年薪百萬的碼農都已關注!
原文:https://blog.51cto.com/15047485/2559933
總結
以上是生活随笔為你收集整理的java面试常考_JAVA面试常考系列十的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 上次登陆时间,php使用cook
- 下一篇: mysql 天数减1_mysql 日期加