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

8/2/2015來源:JSP教程人氣:5507

1、servlet生命周期

所謂生命周期,指的是servlet容器如何創建servlet實例、分配其資源、調用其方法、并銷毀其實例的整個過程。

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

在如下兩種情況下會進行對象實例化。

第一種情況:

當請求到達容器時,容器查找該servlet對象是否存在,如果不存在,才會創建實例。

第二種情況:

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

load-on-starup參數值越小,優先級越高(最小值為0,優先級最高)。

階段二: 初始化

為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方法會執行多次。

 


 

2、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方法用于生成對客戶端的響應。

 


3、HTTP中get和post的區別

1、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方式有一塊用于存放參數的區域。


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


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

建議:除非你肯定你提交的數據可以一次性提交,否則請盡量用 Post 方法


4、Get 方式提交數據,會帶來安全問題,比如一個登陸頁面,通過 Get 方式提交數據時,用戶名和密碼將出現在 URL 上,如果頁面可以被緩存或者其他人可以訪問客戶這臺機器,就可以從歷史記錄獲得該用戶的帳號和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時候,會彈出一個對話框

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

 


 

4、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沒有<%%>。

 

  感謝您的閱讀,如果有其他知識或者錯誤的地方,希望共享一下,相互學習!



百人牛牛鱼丸游戏下载大全 嵊州麻将手机版下载 阿根廷足球明星 互联网金融靠什么盈利 山东11选5走势图 大地棋牌游戏登录中心 欧冠 四人麻将玩法 850金蟾捕鱼千炮版 北京快乐8直播开奖结果 规律三中三 独平公式