容器就是你的程序運行時須要的環境javascript
1,Tomcat是Servlet的運行環境,即一個Servlet容器。html
2,Servlet容器的做用是負責處理客戶請求,當客戶請求來到時,Servlet容器獲取請求,而後調用某個Servlet,並把Servlet的執行結果返回給客戶。java
3,Servlet容器的工做過程是:當客戶請求某個資源時,Servlet容器使用ServletRequest對象把客戶的請求信息封裝起來,而後調用java Servlet API中定義的Servlet的一些生命週期方法,完成Servlet的執行,接着把Servlet執行的要返回給客戶的結果封裝到 ServletResponse對象中,最後Servlet容器把客戶的請求發送給客戶,完成爲客戶的一次服務過程。每個Servlet的類都執行 init()、service()、destory()三個函數的自動調用,在啓動時調用一次init()函數用以進行參數的初始化,在服務期間每當接收到對該Servlet的請求時都會調用Service()函數執行該Servlet的服務操做,當容器銷燬時調用一次destory()函數。web
4,典型的Servlet應用是監聽器、過濾器的實現。apache
JSP運行原理:當Web服務器上的JSP頁面第一次被請求執行時,JSP引擎先將JSP頁面文件轉譯成一個Java文件,即Servlet。Java Servlet是基於服務器端編程的API,用Java Servlet編寫的Java程序稱爲servlet,servlet經過HTML與客戶交互。服務器將前面轉譯成的Java文件編譯成字節碼文件,再執行這個字節碼文件來響應客戶的請求。當這個JSP頁面再次被請求時,只要該JSP文件沒有被改動,JSP引擎就直接調用已裝載的Servlet。 編程
JSP和servlet的運行原理:小程序
JSP是一個運行在服務器端的程序,而javascript是運行在客戶端的程序。兩種程序是工做在不一樣的地方。後端
Javascrīpt如何執行,服務器是不會知道的。
對於javascrīpt的代碼在jsp頁面中和普通的HTML代碼意義上是徹底同樣的。大可沒必要理會,由於javascrīpt是在<sctipt>標記中的,而jsp是<%%>中的,而<%%>中的內容是不會加載到客戶端。因此你能夠利用JSP的規則來肯定那些javascrīpt的片段輸出到客戶端。
<%page language="java"%>在服務器端執行,<scrīpt language=javascrīpt>客戶端執行,由瀏覽器的Javascrīpt引擎解釋執行.
客戶端用戶填寫 HTML 表單,發送請求。 將請求發送給 服務器端servlet(tomcat是servlet的容器)。 servlet 將該 HTTP 請求轉換成一個 MQSeries 消息,並將其放入一個隊列。 後端應用程序處理該消息,而後經過消息隊列發回一個應答。 servlet 從隊列中檢索消息,並將其存放在一個 Java Bean 中。 而後 servlet 調用編譯過的 Java Server Page(JSP) 並動態生成結果 HTML 頁面。 JSP 從 Java Bean 檢索出該頁面須要的數據,將其合併到 HTML,而後將結果頁面發送給客戶端。
JSP中的html代碼和javascrīpt代碼不會在服務器端執行,servlet 調用編譯過的 Java Server Page(JSP) ,也就是運行由JSP編譯成的class文件(運行的代碼包括actionBean,formBean,通常的bean 和內嵌在JSP的Java代碼).
apache是web服務器(不是客戶端,大多數時候就是指代應用服務器,客戶端通常都是web瀏覽器),tomcat是應用(java)服務器,它只是一個運行servlet的容器,能夠認爲是apache的擴展,可是能夠獨立於apache運行。一個Web運行程序(網站)能夠有多個servlet,通常認爲一個action就是一個servlet.
所謂Servlet是指運行在服務器端的Java小程序。用於響應客戶端的請求。在默認狀況下,Servlet採用一種無狀態的請求-響應處理方式。Servlet代碼的主要做用是爲了加強Java服務器端的功能,它運行在服務器端,用於接收而且處理瀏覽器客戶端發出的請求,該請求是經過配置文件web.xml的相關配置進行轉發。也就是說Servlet是一個標準的Java類,它符合Java類的通常規則。和通常的Java類不一樣之處只是在於Servlet能夠處理Http請求。
1.servlet是持久的。servlet只需Web服務器加載一次,後續又用到這個servlet,就不須要再加載。(所謂加載是指servlet加載進JVM運行)
2.servlet是與平臺無關的。
3.servlet是可擴展的。瀏覽器
ActionServlet繼承自javax.servlet.http.HttpServlet類,其在Struts framework中扮演的角色是中心控制器。它提供一箇中心位置來處理所有的終端請求。控制器ActionServlet主要負責將HTTP的客戶請求信息組裝後,根據配置文件的指定描述,轉發到適當的處理器Action。tomcat
JSP 工做原理
全部JSP頁面,在執行的時候都會被服務器端的JSP引擎轉換爲Servelet(.java),而後又由JSP引擎調用Java編譯器,將Servelet(.java)編譯爲Class文件(.class),並由Java虛擬機(JVM)解釋執行。下面驗證這一點:
有一個JSP頁面Test.jsp,在瀏覽器地址欄中輸入http://localhost:8080/Test.jsp,將會出現執行結果。同時在%CATALINA_HOME%/work/Catalina/localhost下多出兩個文件:_Test_jsp.java和_Test_jsp.class,他們分別就是Servelet和Class文件。