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