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