頂層類元素:可包含多個Service頂層類元素:可包含一個Engine,多個Connector連接器類元素:代表通信接口容器類元素:為特定的Service組件處理所有客戶請求,可包含多個Host。容器類元素:為特定的虛擬主機處理所有客戶請求可包含多個Context。容器類元素:為特定的Web應用處理所有客戶請求

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

tomcat的結構

系統 2354 0

tomcat的結構

<Server>??????????????????????????????????? 頂層類元素:可包含多個Service

?????? <Service>??????????????????????????? 頂層類元素:可包含一個Engine,多個Connector

????????????? <Connector/>?????????????? 連接器類元素:代表通信接口

????????????? <Engine>????????????????????? 容器類元素:為特定的Service組件處理所有客戶請求,

???????????????????????????????????????????????? 可包含多個Host。

???????????????????? <Host>????????????????? 容器類元素:為特定的虛擬主機處理所有客戶請求

???????????????????????????????????????????????? 可包含多個Context。

??????????????????????????? <Context>????? 容器類元素:為特定的Web應用處理所有客戶請求

??????????????????????????? </Context>

???????????????????? </Host>

????????????? </Engine>

?????? </Service>

</Server>

Tomcat的工作模式

獨立的Servelet容器:

進程內的Servlet容器:JNI通信機制

進程外的Servlet容器:IPC通信機制

Tomcat的環境變量

Windows環境:

JAVA_HOME:Java安裝根目錄(如:c:\j2sdk1.4.2)。

CATALINA_HOME:Tomcat安裝的根目錄(如:c:\tomcat 5.0)。

Linux環境:(假設Java安裝在/home/java/j2sdk1.4.2,Tomcat安裝在/home/tomcat下)

SHELL類型

設置JAVA_HOME環境變量的命令

bash

JAVA_HOME=/home/java/j2sdk1.4.2;export JAVA_HOME

tsh

Setenv JAVA_HOME /home/java/j2sdk1.4.2

SHELL類型

設置CATALINA_HOME環境變量的命令

bash

CATALINA_HOME=/home/tomcat;export CATALINA_HOME

tsh

Setenv CATALINA_HOME /home/tomcat

Tomcat運行腳本(catalina.bat的使用方法)

命令行參數

描述

start

在新的DOS窗口啟動TOMCAT服務器

run

在當前DOS窗口啟動TOMCAT服務器

debug

在跟蹤模式下啟動TOMCAT服務器

stop

關閉TOMCAT服務器

???????????????????????????????? 創建和發布Web應用

Tomcat的目錄結構

目錄

描述

/bin

存放Windows平臺以及Linux平臺上啟動和關閉Tomcat的腳本文件

/conf

存放Tomcat服務器的各種配置文件,其中最重要的配置文件是server.xml

/server

包含3個子目錄:classes、lib和、webapps

/server/lib

存放Tomcat服務器所需的各種Jar文件(其它應用不可訪問)

/server/webapps

存放Tomcat自帶的兩個Web應用:admin應用和manager應用

/common/lib

存放Tomcat服務器以及所有Web應用都可以訪問的Jar文件

/shared/lib

存放所有Web應用都可以訪問的Jar文件(Tomcat不可訪問)

/logs

存放Tomcat日志文件

/webapps

當發布Web應用時,默認情況下把Web應用文件放于此目錄下

/work

Tomcat把由JSP生成的Servlet放于此目錄下

可以在Java Web應用下的WEB-INF目錄中建立lib子目錄,存放各種Jar文件,這些Jar文件只能被當前Web應用訪問。

在運行過程中,Tomcat類裝載器先裝載classes目錄下的類,再裝載lib目錄下的類。如果兩個目錄下存在同名的類,classes目錄下的類具有優先權。

Web應用的目錄結構

目錄

描述

/helloapp

根目錄,所有的JSP和HTML文件都存放于此目錄下

/helloapp/WEB-INF

存放Web應用的發布描述文件web.xml

/helloapp/WEB-INF/classes

存放各種class文件,Servlet類文件也放于此目錄下

/helloapp/WEB-INF/lib

存放Web應用所需的各種Jar文件。例如:JDBC驅動Jar

關于Context的一點體會

Context 可以直接加在Server.xml的Host中,可是據我的觀察,如果我們通過Tomcat的可視化管理界面(Tomcat Administration)來產生Context,就會發現,Tomcat5.0會自動在..\Tomcat 5.0\conf\Catalina\localhost下面添加一個以Context名為文件名的Xml文件(如:你的Context叫做 "/Hello",那它就會產生一個"Hello.xml"的文件)。并且,如果你是第一次使用Tomcat Administration,它會把它的Server.xml及其它現存的所有Context都進行一次重寫(表現為:原來Server.xml中的注釋全部沒有了)。對于Server.xml的改寫,它還會產生一個備份文件。而且我發現,只要更改過Context,就會重寫一次Server.xml。

Context元素的屬性

屬性

描述

path

指定訪問該Web應用的URL入口(可以隨便取名)

docBase

指定Web應用的文件路徑,可以給定絕對路徑,也可以指定相對于Host的appBase屬性的相對路徑。如果Web采用開放目錄結構,則指定Web應用的根目錄;如果Web應用是個WAR文件,則指定WAR文件的路徑。

reloadable

如果這個屬性設為true,Tomcat服務器在運行狀態下會監視在WEB-INF/classes和WEB-INF/lib目錄下class文件的改動。如果監測到有class文件被更新,服務器會自動重新加載Web應用。

開發階段,將reloadable屬性設為true,有助于調試Servlet和其他的class文件。但是由于這一功能會加重服務器的運行負荷,因此建議在Web應用的產品發布階段,將它改為false。

<servlet>元素的屬性

屬性

描述

<servlet-name>

定義Sevlet的名字(可以隨便?。?

<servlet-class>

指定實現這個Servlet的類

<init-param>

定義Servlet的初始化參數(包括參數名和參數值),一個<servlet>可以有多個<init-param>

<load-on-startup>

指定Web應用啟動時,裝載Servlet的次序。當這個值為正數或零,Servlet容器先加載數值小的Servlet,如果這個值為負或者沒有設定,那么Servlet容器將在Web客戶首次訪問Servlet時加載

配置虛擬主機

???????????????????????????????? Servlet技術

Servlet是與平臺無關的服務器端組件,它可以運行在Servlet容器中。

Servlet框架是由兩個Java包組成:javax.servlet和javax.servlet.http。

Servlet的框架的核心里javax.servlet.Servlet接口,所有的Servlet都必須實現這一接口。

有3個方法代表了Servlet的生命周期:

l?????????? init方法,負責初始化Servlet對象。

l?????????? service方法,負責響應客戶的請求。

l?????????? destroy方法,當Servlet對象退出生命周期時,負責釋放占用的資源。

Servlet類必須擴展以下兩個類中的一個。

l?????????? 擴展GenericServlet類

必須實現service方法,因為GenericServlet類中的service方法被聲明為抽象方法。

Public abstract void service(ServletRequest request,ServletResponse response) thows ServletException,IOException

l?????????? 擴展HttpServlet類

HTTP的請求方式包括DELETE、GET、OPTION、POST、PUT、TRACT,在HttpServlet類中分別提供了相應的doXXX()方法,我們只需要重寫相應方法即可。

下面,介紹一下ServletRequest和ServletResponse接口。

l?????????? ServletRequest接口

它封裝了客戶請求信息,如客戶請求方式、參數名和參數值、客戶端正在使用的協議,以及發出客戶請求的遠程主機信息等。還為Servlet提供了直接以二進制方式讀取客戶請求數據流的ServletInputStream。

ServletRequest接口的部分方法

方法名

描述

getAttribute

根據參數給定的屬性名返回屬性值。

getContentType

返回客戶請求數據的MIME類型

getInputStream

返回以二進制數方式直接讀取客戶請求數據的輸入流

getParameter

根據給定的參數名返回參數值

getRemoteAddr

返回遠程客戶主機的IP地址

getRemoteHost

返回遠程客戶主機名

getRemotePort

返回遠程客房主機端口

setAttribute

在ServletRequest中設置屬性(包括屬性名和屬性值)

l?????????? ServletResponse接口

為Servlet提供了返回結果的方法。它允許Servlet設置返回數據的長度和MIME類型,并且提供輸出流ServletOutputStream。

ServletResponse接口的部分方法

方法名

描述

getOutputStream

返回可以向客戶端發送二進制數據的輸出流對象ServletOutputStream

getWriter

返回可以向客戶端發送字符數據的PrintWriter對象

getCharacterEncoding

返回Servlet發送的響應數據的字符編碼

getContentType

返回Servlet發送的響應數據的MIME類型

setCharacterEncoding

設置Servlet發送的響應數據的字符編碼

setContentType

設置Servlet發送的響應數據的MIME類型

Servlet的生命周期

1. 初始化階段

下列情形下Servlet容器裝載Servlet

l?????????? Servlet容器啟動時自動裝載某些Servlet

l?????????? 在Servlet容器啟動后,客戶首次向Servlet發出請求

l?????????? Servlet的類文件被更新后,重新裝載Servlet

Servlet是否在啟動時自動裝載Servlet,是由在web.xml中為Servlet設置的<load-on-startup>屬性決定的。

Init方法有兩種形式:

public void init(ServletConfig config) throws ServletException

public void init() throws ServletException

初始化階段,Servlet容器會為Servlet創建一個ServletConfig對象,用來存放Servlet的初始化配置信息,如Servlet的初始參數。如果Servlet類覆蓋了第一種帶參數的init方法,應該先調用super.init(config)方法確保參數config引用 ServletConfig對象;如果覆蓋的是第二種不帶參數的init方法,可以不調用super.init()方法,如果要在init方法中訪問 ServletConfig對象,可以調用Servlet類的getServletConfig()方法。

HTTP請求

由3部分組成,分別是:

l?????????? 請求方法URI協議/版本

l?????????? 請求頭(Request Header)

l?????????? 請求正文

示例:

GET /sample.jsp HTTP/1.1

Accept:image/gif,image/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:locakhost

User-Agent:Mozilla/4.0(compatible;MSIE5.01;Windows NT 5.0)

Accept-Encoding:gzip,deflate

userName=werqin&password=1234

HTTP響應

由3部分組成,分別是:

l?????????? 協議 狀態代碼 描述

l?????????? 響應頭(Response Header)

l?????????? 響應正文

示例:

HTTP/1.1 200 OK

Server:ApacheTomcat/5.0.12

Date:Mon,6 Oct 2003 13:23:42 GMT

Content-Length:112

<html>

<head>

<title>HTTP響應示例</title>

</head>

<body>

Hello HTTP!

</body>

</html>

HttpServlet的功能

它首先必須讀取HTTP請求的內容。Servlet容器負責創建HttpRequest對象,并把HTTP請求信息封裝到HttpRequest對象中。

HttpServletRequest的常用方法

方法名

描述

getCookies()

返回HTTP請求的Cookies

getHeader(String name)

返回參數指定的HTTP請求的Header數據

getRequestURI()

返回HTTP請求的URI

getQueryString()

返回HTTP請求數據中的查詢字符串

getMethod()

返回HTTP請求方法

HttpServletResponse的常用方法

方法名

描述

addCookie(Cookie cookie)

向HTTP響應中加入Cookie

setHeader(String name,String value)

設置HTTP響應的Header,如果參數name對應的Header已經存在,則覆蓋原來的Header數據

addHeader(String name,String value)

向HTTP響應中加入Header

除了這兩張表列出的方法外,在HttpServletRequest的ServletRequest中提供了讀取客戶請求的通用方法,在HttpServletResponse的父類ServletResponse中提供了生成服務器響應的通用方法。

創建HttpServlet的步驟

(1)擴展HttpServlet抽象類.

(2)覆蓋HttpServlet的部分方法,如覆蓋doGet()或doPost()方法。

(3)獲取HTTP請求信息,例如通過HttpServletRequest對象來檢索HTML表單所提交的數據或URL上的查詢字符串。無論是HTML表單數據還是URL上的查詢字符串,在HttpServletRequest對象中都以參數名/參數值的形式存放,可以通過以下方法檢索參數信息:

l?????????? getParameterNames():返回一個Enumeration對象,它包含了所有的參數名信息。

l?????????? getParameter(String name):返回參數名name對象的參數值。

l?????????? getParameterValue():返回一個Enumeration對象,它包含了所有參數值信息。

(4)生成HTTP響應結果。

通過利用HttpServletResponse對象的getWriter()方法,可以獲得一個PrintWriter對象。使用PrintWriter的print()或println()方法可以向客戶端發送字符串數據流。

tomcat的結構


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲一区小说区中文字幕 | 国内精品视频成人一区二区 | 日韩午夜片 | 亚洲精品在线视频观看 | 欧美一级大片在线观看 | 日韩有码第一页 | 热玖玖 | 亚洲综合欧美在线 | 日韩在线 | 中文 | 黄色免费观看视频网站 | 女性牲交一级毛片 | 成人影院wwwwwwwwwww | 四虎永久免费网站入口2020 | 毛片网站视频 | 在线欧美不卡 | 四虎影视4hutv最新地址在线 | 精彩视频一区二区三区 | 亚洲色欲色欲www | 日本中文字幕视频在线看 | 久久这里只有精品国产99 | 青青青国产高清免费视频 | 色老头福影院韩国激情影院 | 成人欧美精品大91在线 | 99在线观看精品免费99 | 免费一级毛片在线播放放视频 | 欧美毛片xxxx | 一品毛片 | 香蕉网伊在线中文慕大全 | 国产亚洲精品免费 | 亚洲三级视频在线 | 99热这就是里面只有精品 | 亚洲国产精品a一区二区三区 | 午夜国产福利 | 亚洲人成毛片线播放 | 国产主播福利在线 | 国产成人久久精品麻豆二区 | 欧美成人免费观看国产 | 国产成人精品久久二区二区 | 老司机午夜性大片免费 | 黄页网址在线免费观看 | 国产自愉怕一区二区三区 |