淺談JSP serverlet的區(qū)別與聯(lián)系
jsp是html包含java
servlet是java包含html
jsp請(qǐng)求到tomcat---tomcat封裝了jsp到servlet實(shí)現(xiàn)。
所以jsp請(qǐng)求時(shí)候,會(huì)自動(dòng)創(chuàng)建session
而不用在servlet中request.getSession(true)
servlet是服務(wù)器端的程序,動(dòng)態(tài)生成html頁(yè)面發(fā)到客戶端,但是這樣
程序里有許多out.println(),java和html語(yǔ)言混在一起很亂。所以
后來(lái)推出了jsp。其實(shí)jsp就是servlet,每一個(gè)jsp在第一次運(yùn)行時(shí)被
轉(zhuǎn)換成servlet文件,再編譯成.class來(lái)運(yùn)行。
有了jsp,因此在MVC模式中servlet不再負(fù)責(zé)生成html頁(yè)面,轉(zhuǎn)而擔(dān)任
控制程序邏輯的作用,控制jsp和javabean之間的流轉(zhuǎn)。
-----------------------------------------------------------------
Servlet與Jsp的區(qū)別
* Servlet中沒有內(nèi)置對(duì)象,原來(lái)Jsp中的內(nèi)置對(duì)象都是必須通過(guò)HttpServletRequest對(duì)象,或由
HttpServletResponse對(duì)象生成。
* 對(duì)于靜態(tài)的HTML標(biāo)簽,Servlet都必須使用頁(yè)面輸出流諑行輸出。
總之,Jsp是Servlet的一種簡(jiǎn)化,使用Jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于Jsp中的
Java腳本如何鑲嵌到一個(gè)類中,由Jsp容器完成。而Servlet則是個(gè)完整的Java類,這個(gè)類的Service
方法用于生成對(duì)客戶端的響應(yīng)。
-Servlet的開發(fā)
Servlet通常稱為服務(wù)器端小程序,用于處理和響應(yīng)客戶端的請(qǐng)求。
Servlet是個(gè)特殊的Java類,這個(gè)Java類必須繼承HttpServlet。每個(gè)Servlet可以響應(yīng)客戶端的請(qǐng)求。
Servlet提供了不同的方法用于響應(yīng)客戶端請(qǐng)求。
* doGet : 用于響應(yīng)客戶端的get請(qǐng)求
* doPost : 用于響應(yīng)客戶端的post請(qǐng)求
* doPut : 用于響應(yīng)客戶端的put請(qǐng)求
* doDelete: 用于響應(yīng)客戶端的delete請(qǐng)求
* service(HttpServletRequest request, [可以響應(yīng)客戶端所有類型的請(qǐng)求]
HttpServletResponse response)
throws ServletException,java.io.IOException
其他方法
* init(Servletconfig config) : 創(chuàng)建Servlet實(shí)例時(shí),調(diào)用的初始化方法。
* destory() : 銷毀Servlet實(shí)例時(shí),自動(dòng)調(diào)用的資源回收方法。
-Servlet的配置
編譯好的Servlet源文件并不能響應(yīng)用戶請(qǐng)求,還必須將其編譯成class文件。將編譯后的.class
文件放在WEB-INF/classes路徑下,如果Servlet有包,則還應(yīng)該將class文件放在對(duì)應(yīng)的包路徑下。
為了讓Servlet能響應(yīng)用戶請(qǐng)求,還必須將Servlet配置在Web應(yīng)用中。配置Servlet時(shí),需要修改
web.xml文件
配置Servlet需要配置兩個(gè)部分:
* 配置Servlet的名字:對(duì)應(yīng)web.xml中的<servlet/>元素
* 配置Servlet的URL :對(duì)應(yīng)web.xml中的<servlet-mapping/>元素
-Servlet的生命周期
Servlet在容器中運(yùn)行,其實(shí)例的創(chuàng)建以及銷毀等都不是由程序員決定的,而是由容器進(jìn)行控制的。
Servlet的創(chuàng)建有兩個(gè)選擇:
*客戶端請(qǐng)求對(duì)應(yīng)的Servlet時(shí),創(chuàng)建Servlet實(shí)例:大部分的Servlet都是這種Servlet
*Web應(yīng)用啟動(dòng)時(shí),立刻創(chuàng)建Servlet實(shí)例:即load-on-startup Servlet
Servlet的生命周期:
Begin
---> 創(chuàng)建實(shí)例完成
---> 初始化[init]
---> 響應(yīng)客戶端請(qǐng)求[doGet,doPost,service]
---> 被銷毀[destroy] --->
End
-使用Servlet作為控制器
使用Servlet作為表現(xiàn)層的工作量太大,所有的HTML標(biāo)簽都需要使用頁(yè)面輸出流生成。
因此使用Servlet作為表現(xiàn)層有如下三個(gè)劣勢(shì):
* 開發(fā)效率低,所有的HTML標(biāo)簽都需使用頁(yè)面輸出流完成
* 不利于團(tuán)隊(duì)協(xié)作,美工人員無(wú)法參與Servlet界面的開發(fā)
* 程序可維護(hù)性差,即使修改一個(gè)按鈕的標(biāo)題,讀需要重新編輯Java代碼,并重新編譯
使用Servlet的MVC的架構(gòu)實(shí)現(xiàn):
Jsp頁(yè)面--> Servlet程序 --> Servlet根據(jù)條件轉(zhuǎn)發(fā)新的Jsp頁(yè)面
-load-on-startup Servlet
Servlet實(shí)例化的時(shí)機(jī)還有在Web應(yīng)用啟動(dòng)時(shí),即load-on-startup Servlet
應(yīng)用啟動(dòng)時(shí)就啟動(dòng)的Servlet,通常是用于某些后臺(tái)服務(wù)的Servlet,或者攔截很多請(qǐng)求的Servlet;
這種Servlet通常作為基礎(chǔ)的Servlet使用,提供重要的后臺(tái)服務(wù)。
web.xml中的配置:
在<servlet/>元素中增加元素
< load-on-startup>1</load-on-startup>
-訪問Servlet的配置參數(shù)
配置Servlet時(shí),還可以增加附加的配置參數(shù),通過(guò)使用配置參數(shù),可以實(shí)現(xiàn)更好的解除耦合,
避免將所有的參數(shù)以硬編碼方式寫在程序中。
訪問Servlet配置參數(shù)要通過(guò)ServletConfig類的實(shí)例完成,ServletConfig提供如下方法:
java.lang.String getInitParameter(java.lang.String name) [獲取初始化參數(shù)]
以上這篇淺談JSP serverlet的區(qū)別與聯(lián)系就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
web 開發(fā)之創(chuàng)建本地文件夾的實(shí)現(xiàn)方法
這篇文章主要介紹了web 開發(fā)之創(chuàng)建本地文件夾的實(shí)現(xiàn)方法的相關(guān)資料,filemanage_util.fullPath 就是創(chuàng)建文件的路徑 這是跨平臺(tái)的創(chuàng)建文件夾,需要的朋友可以參考下2017-08-08JSP 中Spring的Resource類讀寫中文Properties實(shí)例代碼
這篇文章主要介紹了JSP 中Spring的Resource類讀寫中文Properties實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03詳解hibernate自動(dòng)創(chuàng)建表的配置
這篇文章主要介紹了詳解hibernate自動(dòng)創(chuàng)建表的配置的相關(guān)資料,需要的朋友可以參考下2017-06-06JSP經(jīng)典學(xué)習(xí)筆記(包含各種入門常用語(yǔ)法)
這篇文章主要介紹了JSP經(jīng)典學(xué)習(xí)筆記,涉及JSP的注釋、聲明、變量、表達(dá)式、腳本、指令等各種入門概念及基本語(yǔ)法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-09-09JSP中內(nèi)建exception對(duì)象時(shí)出現(xiàn)500錯(cuò)誤的解決方法
這篇文章主要介紹了JSP中內(nèi)建exception對(duì)象時(shí)出現(xiàn)500錯(cuò)誤的解決方法,以一個(gè)簡(jiǎn)單實(shí)例形式分析了exception對(duì)象出現(xiàn)500錯(cuò)誤的解決方法,涉及瀏覽器及error文件的設(shè)置技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11關(guān)于IIS連接數(shù)和在線人數(shù)的詳細(xì)說(shuō)明
這篇文章主要為大家介紹下IIS連接數(shù)和在線人數(shù)的詳細(xì)說(shuō)明需要的朋友可以參考下2006-10-10