面試之jsp、Servlet相關知識——生命週期, 區別等

一、servlet生命週期html

所謂生命週期,指的是servlet容器如何建立servlet實例、分配其資源、調用其方法、並銷燬其實例的整個過程。java

階段一: 實例化(就是建立servlet對象,調用構造器)程序員

在以下兩種狀況下會進行對象實例化。web

第一種狀況:算法

當請求到達容器時,容器查找該servlet對象是否存在,若是不存在,纔會建立實例。瀏覽器

第二種狀況:緩存

容器在啓動時,或者新部署了某個應用時,會檢查web.xml當中,servlet是否有 load-on-starup配置。若是有,則會建立該servlet實例。安全

load-on-starup參數值越小,優先級越高(最小值爲0,優先級最高)。服務器

階段二: 初始化jsp

爲servlet分配資源,調用init(ServletConfig config);方法

config對象能夠用來訪問servlet的初始化參數。

初始化參數是使用init-param配置的參數。

init能夠override。

階段三: 就緒/調用

有請求到達容器,容器調用servlet對象的service()方法。

HttpServlet的service()方法,會依據請求方式來調用doGet()或者doPost()方法。可是,這兩個do方法默認狀況下,會拋出異常,須要子類去override。

階段四: 銷燬

容器依據自身的算法,將再也不須要的servlet對象刪除掉。

在刪除以前,會調用servlet對象的destroy()方法。

destroy()方法用於釋放資源。

在servlet的整個生命週期當中,init,destroy只會執行一次,而service方法會執行屢次。

 


 

二、Jsp與servlet的區別 

1.jsp經編譯後就變成了Servlet.(JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM可以識別的java類)
2.jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制.
3.Servlet中沒有內置對象,Jsp中的內置對象都是必須經過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象獲得.
  Jsp是Servlet的一種簡化,使用Jsp只須要完成程序員須要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類的Service方法用於生成對客戶端的響應。

 


三、HTTP中get和post的區別

一、Get 方法經過 URL 請求來傳遞用戶的數據,將表單內各字段名稱與其內容,以成對的字符串鏈接置於 action 屬性所指程序的 url 後,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],數據都會 直接顯示在 url 上,就像用戶點擊一個連接同樣;Post 方法經過 HTTP post 機制,將表單內各字段名稱與其內容放置在 HTML 表頭(header)內一塊兒傳送給服務器端交由 action 屬性能所指的程序處理,該程序會經過標準輸入(stdin)方式,將表單的數據讀出並加以處理,post方式有一塊用於存放參數的區域。


二、 Get 方式須要使用 Request.QueryString 來取得變量的值;而 Post 方式經過 Request.Form 來訪問提交的內容


三、Get 方式傳輸的數據量很是小,只能傳文本。通常限制在 2 KB 左右,可是執行效率卻比 Post 方法好;而 Post 方式傳遞的數據量相對較大,能夠傳送大的文本和二進制數據,如文件,它是等待服務器來讀取數據,不過也有字節限制,這是爲了不對服務器用大量數據進行惡意攻擊,根據微軟方面的說法,微軟對用 Request.Form() 可接收的最大數據有限制,IIS 4 中爲 80 KB 字節,IIS 5 中爲 100 KB 字節

建議:除非你確定你提交的數據能夠一次性提交,不然請儘可能用 Post 方法


四、Get 方式提交數據,會帶來安全問題,好比一個登錄頁面,經過 Get 方式提交數據時,用戶名和密碼將出如今 URL 上,若是頁面能夠被緩存或者其餘人能夠訪問客戶這臺機器,就能夠從歷史記錄得到該用戶的賬號和密碼,因此表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面若是刷新的時候,會彈出一個對話框

建議:出於安全性考慮,建議最好使用 Post 提交數據

 


 

四、html 和 jsp 的區別

HTML(Hypertext Markup Language)文本標記語言,它是靜態頁面,和JavaScript同樣解釋性語言,爲何說是解釋性 語言呢?由於,只要你有一個瀏覽器那麼它就能夠正常顯示出來,而不須要指定的編譯工具,只需在TXT文檔中寫上HTML標記就OK。
JSP(Java Server Page)看這個意思就知道是Java服務端的頁面,因此它是動態的,它是須要通過JDK編譯後把內容發給客戶端去顯 示,咱們都知道,Java文件編譯後會產生一個class文件,最終執行的就是這個class文件,JSP也同樣,它也要編譯成class文件!JSP不 止要編譯,它還得要轉譯,首先把JSP轉譯成一個Servlet文件,而後在編譯成class文件。當用戶訪問JSP時就執行了class文件,最 終......

1.最簡單的區別就是,HTML能直接打開,jsp只能發佈到Tomact等服務器上才能打開 。
2.定義上HTML頁面是靜態頁面能夠直接運行,JSP頁面是動態頁它運行時須要轉換成servlet。 
3.他們的表頭不一樣,這個是JSP的頭「 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>」在表頭中有編碼格式和倒入包等。
4.也是很好區分的在jsp中用<%%>就能夠寫Java代碼了,而html沒有<%%>。

 

  感謝您的閱讀,若是有其餘知識或者錯誤的地方,但願共享一下,相互學習!

相關文章
相關標籤/搜索