摘要:,容器的作用是負(fù)責(zé)處理客戶請(qǐng)求,當(dāng)客戶請(qǐng)求來到時(shí),容器獲取請(qǐng)求,然后調(diào)用某個(gè),并把的執(zhí)行結(jié)果返回給客戶。將請(qǐng)求發(fā)送給服務(wù)器端是的容器。將該請(qǐng)求轉(zhuǎn)換成一個(gè)消息,并將其放入一個(gè)隊(duì)列。繼承自類,其在中扮演的角色是中心控制器。
容器就是你的程序運(yùn)行時(shí)需要的環(huán)境
1,Tomcat是Servlet的運(yùn)行環(huán)境,即一個(gè)Servlet容器。
2,Servlet容器的作用是負(fù)責(zé)處理客戶請(qǐng)求,當(dāng)客戶請(qǐng)求來到時(shí),Servlet容器獲取請(qǐng)求,然后調(diào)用某個(gè)Servlet,并把Servlet的執(zhí)行結(jié)果返回給客戶。
3,Servlet容器的工作過程是:當(dāng)客戶請(qǐng)求某個(gè)資源時(shí),Servlet容器使用ServletRequest對(duì)象把客戶的請(qǐng)求信息封裝起來,然后調(diào)用java Servlet API中定義的Servlet的一些生命周期方法,完成Servlet的執(zhí)行,接著把Servlet執(zhí)行的要返回給客戶的結(jié)果封裝到 ServletResponse對(duì)象中,最后Servlet容器把客戶的請(qǐng)求發(fā)送給客戶,完成為客戶的一次服務(wù)過程。每一個(gè)Servlet的類都執(zhí)行 init()、service()、destory()三個(gè)函數(shù)的自動(dòng)調(diào)用,在啟動(dòng)時(shí)調(diào)用一次init()函數(shù)用以進(jìn)行參數(shù)的初始化,在服務(wù)期間每當(dāng)接收到對(duì)該Servlet的請(qǐng)求時(shí)都會(huì)調(diào)用Service()函數(shù)執(zhí)行該Servlet的服務(wù)操作,當(dāng)容器銷毀時(shí)調(diào)用一次destory()函數(shù)。
4,典型的Servlet應(yīng)用是監(jiān)聽器、過濾器的實(shí)現(xiàn)。
JSP運(yùn)行原理:當(dāng)Web服務(wù)器上的JSP頁面第一次被請(qǐng)求執(zhí)行時(shí),JSP引擎先將JSP頁面文件轉(zhuǎn)譯成一個(gè)Java文件,即Servlet。Java Servlet是基于服務(wù)器端編程的API,用Java Servlet編寫的Java程序稱為servlet,servlet通過HTML與客戶交互。服務(wù)器將前面轉(zhuǎn)譯成的Java文件編譯成字節(jié)碼文件,再執(zhí)行這個(gè)字節(jié)碼文件來響應(yīng)客戶的請(qǐng)求。當(dāng)這個(gè)JSP頁面再次被請(qǐng)求時(shí),只要該JSP文件沒有被改動(dòng),JSP引擎就直接調(diào)用已裝載的Servlet。
JSP和servlet的運(yùn)行原理:
JSP是一個(gè)運(yùn)行在服務(wù)器端的程序,而javascript是運(yùn)行在客戶端的程序。兩種程序是工作在不同的地方。
Javascrīpt如何執(zhí)行,服務(wù)器是不會(huì)知道的。
對(duì)于javascrīpt的代碼在jsp頁面中和普通的HTML代碼意義上是完全一樣的。大可不必理會(huì),因?yàn)閖avascrīpt是在
<%page language="java"%>在服務(wù)器端執(zhí)行,
客戶端用戶填寫 HTML 表單,發(fā)送請(qǐng)求。 將請(qǐng)求發(fā)送給 服務(wù)器端servlet(tomcat是servlet的容器)。 servlet 將該 HTTP 請(qǐng)求轉(zhuǎn)換成一個(gè) MQSeries 消息,并將其放入一個(gè)隊(duì)列。 后端應(yīng)用程序處理該消息,然后通過消息隊(duì)列發(fā)回一個(gè)應(yīng)答。 servlet 從隊(duì)列中檢索消息,并將其存放在一個(gè) Java Bean 中。 然后 servlet 調(diào)用編譯過的 Java Server Page(JSP) 并動(dòng)態(tài)生成結(jié)果 HTML 頁面。 JSP 從 Java Bean 檢索出該頁面需要的數(shù)據(jù),將其合并到 HTML,然后將結(jié)果頁面發(fā)送給客戶端。
JSP中的html代碼和javascrīpt代碼不會(huì)在服務(wù)器端執(zhí)行,servlet 調(diào)用編譯過的 Java Server Page(JSP) ,也就是運(yùn)行由JSP編譯成的class文件(運(yùn)行的代碼包括actionBean,formBean,一般的bean 和內(nèi)嵌在JSP的Java代碼).
apache是web服務(wù)器(不是客戶端,大多數(shù)時(shí)候就是指代應(yīng)用服務(wù)器,客戶端一般都是web瀏覽器),tomcat是應(yīng)用(java)服務(wù)器,它只是一個(gè)運(yùn)行servlet的容器,可以認(rèn)為是apache的擴(kuò)展,但是可以獨(dú)立于apache運(yùn)行。一個(gè)Web運(yùn)行程序(網(wǎng)站)可以有多個(gè)servlet,一般認(rèn)為一個(gè)action就是一個(gè)servlet.
所謂Servlet是指運(yùn)行在服務(wù)器端的Java小程序。用于響應(yīng)客戶端的請(qǐng)求。在默認(rèn)情況下,Servlet采用一種無狀態(tài)的請(qǐng)求-響應(yīng)處理方式。Servlet代碼的主要作用是為了增強(qiáng)Java服務(wù)器端的功能,它運(yùn)行在服務(wù)器端,用于接收并且處理瀏覽器客戶端發(fā)出的請(qǐng)求,該請(qǐng)求是通過配置文件web.xml的相關(guān)配置進(jìn)行轉(zhuǎn)發(fā)。也就是說Servlet是一個(gè)標(biāo)準(zhǔn)的Java類,它符合Java類的一般規(guī)則。和一般的Java類不同之處只是在于Servlet可以處理Http請(qǐng)求。
1.servlet是持久的。servlet只需Web服務(wù)器加載一次,后續(xù)又用到這個(gè)servlet,就不需要再加載。(所謂加載是指servlet加載進(jìn)JVM運(yùn)行)
2.servlet是與平臺(tái)無關(guān)的。
3.servlet是可擴(kuò)展的。
ActionServlet繼承自javax.servlet.http.HttpServlet類,其在Struts framework中扮演的角色是中心控制器。它提供一個(gè)中心位置來處理全部的終端請(qǐng)求。控制器ActionServlet主要負(fù)責(zé)將HTTP的客戶請(qǐng)求信息組裝后,根據(jù)配置文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鰽ction。
JSP 工作原理
所有JSP頁面,在執(zhí)行的時(shí)候都會(huì)被服務(wù)器端的JSP引擎轉(zhuǎn)換為Servelet(.java),然后又由JSP引擎調(diào)用Java編譯器,將Servelet(.java)編譯為Class文件(.class),并由Java虛擬機(jī)(JVM)解釋執(zhí)行。下面驗(yàn)證這一點(diǎn):
有一個(gè)JSP頁面Test.jsp,在瀏覽器地址欄中輸入http://localhost:8080/Test.jsp,將會(huì)出現(xiàn)執(zhí)行結(jié)果。同時(shí)在%CATALINA_HOME%/work/Catalina/localhost下多出兩個(gè)文件:_Test_jsp.java和_Test_jsp.class,他們分別就是Servelet和Class文件。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/64753.html
摘要:初始化的錯(cuò)誤處理在初始化期間,實(shí)例可能通過拋出或者異常表明它不能進(jìn)行有效服務(wù)。每一個(gè)請(qǐng)求由類型的對(duì)象代表,而使用回應(yīng)該請(qǐng)求。在請(qǐng)求的情況下,容器必須提供代表請(qǐng)求和回應(yīng)的和的具體實(shí)現(xiàn)。表明不能對(duì)請(qǐng)求進(jìn)行處理,可能是暫時(shí)的,也可能是永久的。 servlet詳解 Servlet有良好的生存期的定義,包括如何加載、實(shí)例化、初始化、處理客戶端請(qǐng)求以及如何被移除。這個(gè)生存期由javax.Serv...
摘要:自帶的方法和方法最為重要主要完成以下工作創(chuàng)建用于解析的配置文件的對(duì)象。讀取默認(rèn)的自身的配置文件,如果存在則解析。 JAVA WEB 技術(shù)是當(dāng)今主流的互聯(lián)網(wǎng)WEB應(yīng)用技術(shù)之一,而Servlet則是JAVA WEB 中的核心基礎(chǔ)。最近在看了《深入分析Java Web技術(shù)內(nèi)幕》(許令波 著)這本書發(fā)現(xiàn)了以前沒有看到的內(nèi)容,就想對(duì)書中的內(nèi)容進(jìn)行總結(jié),也方便自己以后的回顧,所以就有了這篇文章。 ...
摘要:的生命周期是由它部署的容器控制的。管理生命周期事件你可以通過定義生命周期事件發(fā)生方法的監(jiān)聽器來監(jiān)聽的生命周期并做出反應(yīng)。生命周期事件列表使用注解可以獲取特定程序的各種事件。處理異常執(zhí)行時(shí),可能發(fā)生任意數(shù)量的異常。 Servlet的生命周期是由它部署的容器控制的。當(dāng)一個(gè)請(qǐng)求映射到一個(gè)Servlet,Servlet容器執(zhí)行下面的步驟。 1 如果不存在這個(gè)Servlet的實(shí)例,容器執(zhí)行:...
摘要:可以發(fā)現(xiàn),這兩個(gè)類都是可以被實(shí)例化的,且構(gòu)造器不需要參數(shù)。這段代碼的后半部分其實(shí)沒有什么新意,但下半部分的第一行非常關(guān)鍵接受一個(gè)作為構(gòu)造器參數(shù)這實(shí)際上解決了我們?cè)诘谒恼聹y試失敗后反思的可能的疑惑我們配置的容器實(shí)際上并沒有和融合起來。 如何向一個(gè)WebApp引入Spring與Spring MVC 1 在Servlet 3.0環(huán)境中,容器(加載運(yùn)行webapp的軟件,如Tomcat)會(huì)在類...
閱讀 2495·2021-09-30 09:47
閱讀 1440·2021-09-28 09:35
閱讀 3325·2021-09-22 15:57
閱讀 2587·2021-09-22 14:59
閱讀 3715·2021-09-07 10:25
閱讀 3152·2021-09-03 10:48
閱讀 3113·2021-08-26 14:14
閱讀 1022·2019-08-30 15:55