JSP(Java Server Pages):JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所要求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶真個閱讀器。
Java Servlet:Servlet是1種小型的Java程序,它擴大了Web服務器的功能。作為1種服務器真個利用,當被要求時開始履行,這和CGIPerl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少許的Java代碼,而servlets全部由Java寫成并且生成HTML。
通俗的說,SERVLET是往JAVA代碼中嵌HTML元素,JSP是往HTML里嵌JAVA代碼。
JAVA經典分層結構中,JSP、Servlet、JavaBean3者擔負了利用服務器真個表示層,與客戶層和業務邏輯層進行交互。
SERVLET是SUN初期推出的,其功能比較強勁,體系設計也很先進,只是,它輸出HTML語句還是采取了老的CGI方式,是1句1句輸出,所以,編寫和修改HTML非常不方便。
后來SUN推出了類似于ASP的鑲嵌型的JSP,把JSPTAG鑲嵌到HTML語句中,這樣,就大大簡化和方便了網頁的設計和修改。
由于2者的各自的特性,決定了其在MVC中對應的位置:JSP比較合適承當View的角色,而Controller這個角色就非Servlet莫屬了。
JavaBean則擔負了Model層的角色,與數據打交道。
1、servlet--生命周期
Servlet生命周期:init:初始化-->service:響應客戶要求-->destroy:燒毀
1)init():在Servlet的生命周期中,僅履行1次init()方法。它是在服務器裝入Servlet時履行的,負責初始化Servlet對象。可以配置服務器,以在啟動服務器或客戶機首次訪問Servlet時裝入Servlet。不管有多少客戶機訪問Servlet,都不會重復履行init()。
2)service():它是Servlet的核心,負責響應客戶的要求。每當1個客戶要求1個HttpServlet對象,該對象的Service()方法就要調用,而且傳遞給這個方法1個“要求”(ServletRequest)對象和1個“響應”(ServletResponse)對象作為參數。在HttpServlet中已存在Service()方法。默許的服務功能是調用與HTTP要求的方法相應的do功能。
3)destroy():僅履行1次,在服務器端停止且卸載Servlet時履行該方法。當Servlet對象退誕生命周期時,負責釋放占用的資源。1個Servlet在運行service()方法時可能會產生其他的線程,因此需要確認在調用destroy()方法時,這些線程已終止或完成。
2、JSP--主要內置對象
1)request對象:對客戶的要求做出動態的響應,向客戶端發送數據。
2)session對象:它在第1個JSP頁面被裝載時自動創建,完成會話期管理。
3)application對象:服務器啟動后就產生了這個application對象,當客戶在所訪問的網站的各個頁面之間閱讀時,這個application對象都是同1個,直到服務器關閉。但是與session不同的是,所有客戶的application對象都是同1個,即所有客戶同享這個內置的application對象。
4)pageContext對象:javax.servlet.jsp.PageContext 的實例,該對象代表該JSP頁面上下文,使用該對象可以訪問頁面中的同享數據。經常使用的方法有getServletContext()和getServletConfig()等。
5)、out對象:1個輸出流,用來向客戶端輸出數據。out對象用于各種數據的輸出。
JSP在本質上就是SERVLET,但是二者的創建方式不1樣.Servlet完全是JAVA程序代碼構成善于于流程控制和事務處理而通過Servlet來生成動態網頁;JSP由HTML代碼和JSP標簽構成,可以方便地編寫動態網頁因此在實際利用中采取Servlet來控制業務流程,而采取JSP來生成動態網頁.在struts框架中,JSP位于MVC設計模式的視圖層,而Servlet位于控制層.