jsp和servlet的區別


 

1.JSP全名為Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標准通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。

用JSP開發的Web應用跨平台的,既能在Linux下運行,也能在其他操作系統上運行。(JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)


2.jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制.


3.Servlet中沒有內置對象,Jsp中的內置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到.


4.Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。

而Servlet則是個完整的Java類,這個類的Service方法用於生成對客戶端的響應。

jsp頁面在什么時候編譯成Servlet的?

在執行JSP網頁時,通常可以分為兩個時期:轉譯時期(Translation Time)和請求時期(Request Time)。
◆轉譯時期:JSP網頁轉移成Servlet類。
◆請求時期:Servlet類執行后,響應結果至客戶端。
轉譯期間做了兩件事情:
◆轉譯時期:將JSP網頁轉移為Servlet源代碼 .java.
◆編譯時期:將Servlet 源代碼 .java編譯成 Servlet類 .class.


聯系: JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯后是“類servlet”。Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

Servlet的開發
Servlet通常稱為服務器端小程序,用於處理和響應客戶端的請求。
Servlet是個特殊的Java類,這個Java類必須繼承HttpServlet。每個Servlet可以響應客戶端的請求。
Servlet提供了不同的方法用於響應客戶端請求。
* doGet : 用於響應客戶端的get請求
* doPost : 用於響應客戶端的post請求
* doPut : 用於響應客戶端的put請求
* doDelete: 用於響應客戶端的delete請求
* service(HttpServletRequest request, [可以響應客戶端所有類型的請求]
HttpServletResponse response)
throws ServletException,java.io.IOException
其他方法
* init(Servletconfig config) : 創建Servlet實例時,調用的初始化方法。
* destory() : 銷毀Servlet實例時,自動調用的資源回收方法。
Servlet的配置
編譯好的Servlet源文件並不能響應用戶請求,還必須將其編譯成class文件。將編譯后的.class
文件放在WEB-INF/classes路徑下,如果Servlet有包,則還應該將class文件放在對應的包路徑下。
為了讓Servlet能響應用戶請求,還必須將Servlet配置在Web應用中。配置Servlet時,需要修改
web.xml文件。
配置Servlet需要配置兩個部分:
* 配置Servlet的名字:對應web.xml中的<servlet/>元素
* 配置Servlet的URL :對應web.xml中的<servlet-mapping/>元素
-Servlet的生命周期
Servlet在容器中運行,其實例的創建以及銷毀等都不是由程序員決定的,而是由容器進行控制的。
Servlet的創建有兩個選擇:
*客戶端請求對應的Servlet時,創建Servlet實例:大部分的Servlet都是這種Servlet
*Web應用啟動時,立刻創建Servlet實例:即load-on-startup Servlet
Servlet的生命周期
Begin
---> 創建實例完成
---> 初始化[init]
---> 響應客戶端請求[doGet,doPost,service]
---> 被銷毀[destroy] --->
End
-使用Servlet作為控制器
使用Servlet作為表現層的工作量太大,所有的HTML標簽都需要使用頁面輸出流生成。
因此使用Servlet作為表現層有如下三個劣勢:
* 開發效率低,所有的HTML標簽都需使用頁面輸出流完成
* 不利於團隊協作,美工人員無法參與Servlet界面的開發
* 程序可維護性差,即使修改一個按鈕的標題,讀需要重新編輯Java代碼,並重新編譯

使用Servlet的MVC的架構實現:
Jsp頁面--> Servlet程序 --> Servlet根據條件轉發新的Jsp頁面
-load-on-startup Servlet
Servlet實例化的時機還有在Web應用啟動時,即load-on-startup Servlet
應用啟動時就啟動的Servlet,通常是用於某些后台服務的Servlet,或者攔截很多請求的Servlet;
這種Servlet通常作為基礎的Servlet使用,提供重要的后台服務。
web.xml中的配置:
在<servlet/>元素中增加元素
<load-on-startup>1</load-on-startup>
-訪問Servlet的配置參數
配置Servlet時,還可以增加附加的配置參數,通過使用配置參數,可以實現更好的解除耦合,
避免將所有的參數以硬編碼方式寫在程序中。
訪問Servlet配置參數要通過ServletConfig類的實例完成,ServletConfig提供如下方法:
java.lang.String getInitParameter(java.lang.String name) [獲取初始化參數]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM