Servlet(Server Applet),全稱Java Servlet。是用Java編寫的服務(wù)器端程序。其主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。狹義的Servlet是指Java語言實(shí)現(xiàn)的一個接口,廣義的Servlet是指任何實(shí)現(xiàn)了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。Servlet運(yùn)行于支持Java的應(yīng)用服務(wù)器中。從實(shí)現(xiàn)上講,Servlet可以響應(yīng)任何類型的請求,但絕大多數(shù)情況下Servlet只用來擴(kuò)展基于HTTP協(xié)議的Web服務(wù)器。
創(chuàng)新互聯(lián)建站專注于潞州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供潞州營銷型網(wǎng)站建設(shè),潞州網(wǎng)站制作、潞州網(wǎng)頁設(shè)計(jì)、潞州網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造潞州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供潞州網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。Sun公司創(chuàng)建了第一個Servlet容器,即Java Web Server,但JWS只是為了演示Servlet的相應(yīng)功能,所以其很不穩(wěn)定。與此同時,Apache軟件基金創(chuàng)建了JServ項(xiàng)目,一個能夠與Apache整合起來的Servlet容器。1999年,Sun把JWS捐給了Apache軟件基金,于是兩個項(xiàng)目合二為一,即今天Tomcat的前身。第一個Tomcat版本是Tomcat 3.x系列,而發(fā)布于2001年Tomcat 4.0則是在此前基礎(chǔ)上進(jìn)行了重新設(shè)計(jì)和實(shí)現(xiàn),其代碼項(xiàng)目被命名為Catalina。
Tomcat是由Apache軟件基金會下屬的Jakarta項(xiàng)目開發(fā)的一個Servlet容器,按照Sun公司提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對Servlet和JavaServer Page(JSP)的支持,并提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由于Tomcat本身也內(nèi)含了一個HTTP服務(wù)器,它也可以被視作一個單獨(dú)的Web服務(wù)器。但是,不能將Tomcat和Apache Web服務(wù)器混淆,Apache Web Server是一個用C語言實(shí)現(xiàn)的HTTP web server;這兩個HTTP web server不是捆綁在一起的。Apache Tomcat包含了一個配置管理工具,也可以通過編輯XML格式的配置文件來進(jìn)行配置。
Tomcat提供了一個Jasper編譯器用以將JSP編譯成對應(yīng)的Servlet。Tomcat的Servlet引擎通常與Apache或者其他Web服務(wù)器一起工作。除了用于開發(fā)過程中的調(diào)試以及那些對速度和事務(wù)處理只有很小要求的用戶,很少會將Tomcat單獨(dú)作為Web服務(wù)器。但隨著版本的更新,正有越來越多的用戶將其單獨(dú)作為Web服務(wù)器用以那些對速度和可靠性有較高要求的環(huán)境中。
Tomcat不是一個完整意義上的Jave EE服務(wù)器,它甚至都沒有提供對哪怕是一個主要Java EE API的實(shí)現(xiàn);但由于遵守Apache開源協(xié)議,Tomcat卻又為眾多的Java應(yīng)用程序服務(wù)器嵌入自己的產(chǎn)品中構(gòu)建商業(yè)的Java應(yīng)用程序服務(wù)器,如JBoss和JOnAS。盡管Tomcat對Jave EE API的實(shí)現(xiàn)并不完整,然而很企業(yè)也在漸漸拋棄使用傳統(tǒng)的Java EE技術(shù)(如EJB)轉(zhuǎn)而采用一些開源組件來構(gòu)建復(fù)雜的應(yīng)用。這些開源組件如Structs、Spring和Hibernate,而Tomcat能夠?qū)@些組件實(shí)現(xiàn)完美的支持。
HTTP是一種無狀態(tài)的協(xié)議,在用戶的一次連接請求響應(yīng)完成后,服務(wù)器端將無法識別在后續(xù)的連接請求中再次識別此用戶,交將其所有請求關(guān)聯(lián)起來。為了解決這個問題,java container通過一個臨時的cookie來為此用戶保存一個標(biāo)識,此標(biāo)識即所謂的用戶session。
在第一次調(diào)用之后,JSP會被編譯成一個servlet類,在后續(xù)的操作中則可以直接使用此類,從而避免了對每一次調(diào)用的都要重新分析和編譯。因此,類似servlet,JSP的執(zhí)行需要在container中完成。JSP的container跟servlet的container基本相同,但在JSP執(zhí)行之前,需要一些額外的步驟如與servlet代碼建立會話等。Tomcat包含了一個叫做Catalina的Servlet container(執(zhí)行servlet和編譯過的JSP)和一個JSP編譯器(Jasper編譯器)。事實(shí)上,一個包含了JSP編譯器和Servlet容器的應(yīng)用程序組合通過被稱作Web容器。
JSP和Servlet的區(qū)別在于,Servlet通常需要事先編譯好,而JSP則并非必須事先編譯。這意味著Servlet通常放置于私有資源區(qū)域,而JSP則通常以嵌入代碼的方式包含于HTML頁面文件中,這些HTML文件通常放置在公開資源區(qū)域。
MVC架構(gòu):Controller,Model和View各自獨(dú)立,一個流行的開源實(shí)現(xiàn)是Apache Structs框架;目今,設(shè)計(jì)優(yōu)良的Web應(yīng)用程序通常用相就的技術(shù)實(shí)現(xiàn)相應(yīng)的功能,比如: 1、Servlet用于實(shí)現(xiàn)應(yīng)用邏輯; 2、JSP用于內(nèi)容展示; 3、標(biāo)簽庫和JSP擴(kuò)展語言用于替換在JSP內(nèi)部嵌入Java代碼,進(jìn)而降低了HTML維護(hù)的復(fù)雜度; 4、MVC框架用于實(shí)現(xiàn)展示和應(yīng)用邏輯的分離;
安裝tomcat:先安裝Jvm:
安裝openjdk或oracle jdk:
1、安裝openjdk:
[root@node0 ~]# yum install java-1.7.0-openjdk [root@node0 ~]# java -version java version "1.7.0_79" OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
2、安裝oracle jdk:
[root@node0 ~]# yum install jdk-7u79-linux-x64.rpm [root@node0 ~]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH [root@node0 java]# source /etc/profile.d/java.sh [root@node0 java]# java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
安裝tomcat:
[root@node0 ~]# tar xf apache-tomcat-7.0.65.tar.gz -C /usr/local/ [root@node0 ~]# cd /usr/local/ [root@node0 local]# ln -sv apache-tomcat-7.0.65 tomcat "tomcat" -> "apache-tomcat-7.0.65" [root@node0 ~]# vim /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$CATALINA_HOME/bin:$PATH [root@node0 ~]# source /etc/profile.d/tomcat.sh
提供腳本:
[root@node0 ~]# cat /etc/rc.d/init.d/tomcat #!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. # JAVA_OPTS=\'-Xms64m -Xmx128m\' JAVA_HOME=/usr/lib/jvm/jre CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start ;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start ;; *) echo "Usage: `basename $0` {start|stop|restart}" exit 1 ;; esac [root@node0 ~]# chmod +x /etc/rc.d/init.d/tomcat [root@node0 ~]# chkconfig tomcat --add 配置文件:
[root@node3 tomcat]# ls conf/ \\:Tomcat的配置文件; server.xml:Tomcat的主配置文件,包含Service,Connector,Engine,Realm,Valve,Hosts主組件的相關(guān)配置信息; web.xml:遵循Servlet規(guī)范標(biāo)準(zhǔn)的配置文件,用于配置servlet,并為所有的Web應(yīng)用程序提供包括MIME映射等默認(rèn)配置信息; tomcat-user.xml:Realm認(rèn)證時用到的相關(guān)角色、用戶和密碼等信息;Tomcat自帶的manager默認(rèn)情況下會用到此文件;在Tomcat中添加/刪除用戶,為用戶指定角色等將通過編輯此文件實(shí)現(xiàn); catalina.policy:Java相關(guān)的安全策略配置文件,在系統(tǒng)資源級別上提供訪問控制的能力; catalina.properties:Tomcat內(nèi)部package的定義及訪問相關(guān)的控制,也包括對通過類裝載器裝載的內(nèi)容的控制;Tomcat6在啟動時會事先讀取此文件的相關(guān)設(shè)置; logging.properties:Tomcat通過自己內(nèi)部實(shí)現(xiàn)的JAVA日志記錄器來記錄操作相關(guān)的日志,此文件即為日志記錄器相關(guān)的配置信息,可以用來定義日志記錄的組件級別以及日志文件的存在位置等; context.xml:每個webapp都有其配置文件,通常位于webapp目錄下的WEB-INF目錄中,通常用于定義會話管理器、Realm以及JDBC等;此配置文件是用于為部署在當(dāng)前tomcat實(shí)例上的所有的webapp提供默認(rèn)配置;
主配置文件:
組件:由java類實(shí)現(xiàn);有些組件實(shí)現(xiàn)的方式不止一種;有些組件可以實(shí)現(xiàn)嵌套別的組件;由一組嵌套的層次和組件組成,一般可分為以下四類
頂級類組件:位于配置層次的頂級,并且彼此間有著嚴(yán)格的對應(yīng)關(guān)系;
連接器組件:連接客戶端(可以是瀏覽器或Web服務(wù)器)請求至Servlet容器,
容器類組件:包含一組其它組件;
被嵌套類組件:位于一個容器當(dāng)中,但不能包含其它組件;
各常見組件:
1、服務(wù)器(server):Tomcat的一個實(shí)例,通常一個JVM只能包含一個Tomcat實(shí)例;因此,一臺物理服務(wù)器上可以在啟動多個JVM的情況下在每一個JVM中啟動一個Tomcat實(shí)例,每個實(shí)例分屬于一個獨(dú)立的管理端口。這是一個頂級組件。
2、服務(wù)(service):一個服務(wù)組件通常包含一個引擎和與此引擎相關(guān)聯(lián)的一個或多個連接器。給服務(wù)命名可以方便管理員在日志文件中識別不同服務(wù)產(chǎn)生的日志。一個server可以包含多個service組件,但通常情下只為一個service指派一個server。
連接器類組件:
3、連接器(connectors):負(fù)責(zé)連接客戶端(可以是瀏覽器或Web服務(wù)器)請求至Servlet容器內(nèi)的Web應(yīng)用程序,通常指的是接收客戶發(fā)來請求的位置及服務(wù)器端分配的端口。默認(rèn)端口通常是HTTP協(xié)議的8080,管理員也可以根據(jù)自己的需要改變此端口。一個引擎可以配置多個連接器,但這些連接器必須使用不同的端口。默認(rèn)的連接器是基于HTTP/1.1的Coyote。同時,Tomcat也支持AJP、JServ和JK2連接器。
容器類組件:
4、引擎(Engine):引擎通是指處理請求的Servlet引擎組件,即Catalina Servlet引擎,它檢查每一個請求的HTTP首部信息以辨別此請求應(yīng)該發(fā)往哪個host或context,并將請求處理后的結(jié)果返回的相應(yīng)的客戶端。嚴(yán)格意義上來說,容器不必非得通過引擎來實(shí)現(xiàn),它也可以是只是一個容器。如果Tomcat被配置成為獨(dú)立服務(wù)器,默認(rèn)引擎就是已經(jīng)定義好的引擎。而如果Tomcat被配置為Apache Web服務(wù)器的提供Servlet功能的后端,默認(rèn)引擎將被忽略,因?yàn)閃eb服務(wù)器自身就能確定將用戶請求發(fā)往何處。一個引擎可以包含多個host組件。
5、主機(jī)(Host):主機(jī)組件類似于Apache中的虛擬主機(jī),但在Tomcat中只支持基于FQDN的“虛擬主機(jī)”。一個引擎至少要包含一個主機(jī)組件。
6、上下文(Context):Context組件是最內(nèi)層次的組件,它表示W(wǎng)eb應(yīng)用程序本身。配置一個Context最主要的是指定Web應(yīng)用程序的根目錄,以便Servlet容器能夠?qū)⒂脩粽埱蟀l(fā)往正確的位置。Context組件也可包含自定義的錯誤頁,以實(shí)現(xiàn)在用戶訪問發(fā)生錯誤時提供友好的提示信息。
被嵌套類(nested)組件:
這類組件通常包含于容器類組件中以提供具有管理功能的服務(wù),它們不能包含其它組件,但有些卻可以由不同層次的容器各自配置。
7、閥門(Valve):用來攔截請求并在將其轉(zhuǎn)至目標(biāo)之前進(jìn)行某種處理操作,類似于Servlet規(guī)范中定義的過濾器。Valve可以定義在任何容器類的組件中。Valve常被用來記錄客戶端請求、客戶端IP地址和服務(wù)器等信息,這種處理技術(shù)通常被稱作請求轉(zhuǎn)儲(request dumping)。請求轉(zhuǎn)儲valve記錄請求客戶端請求數(shù)據(jù)包中的HTTP首部信息和cookie信息文件中,響應(yīng)轉(zhuǎn)儲valve則記錄響應(yīng)數(shù)據(jù)包首部信息和cookie信息至文件中。
8、日志記錄器(Logger):用于記錄組件內(nèi)部的狀態(tài)信息,可被用于除Context之外的任何容器中。日志記錄的功能可被繼承,因此,一個引擎級別的Logger將會記錄引擎內(nèi)部所有組件相關(guān)的信息,除非某內(nèi)部組件定義了自己的Logger組件。
9、領(lǐng)域(Realm):用于用戶的認(rèn)證和授權(quán);在配置一個應(yīng)用程序時,管理員可以為每個資源或資源組定義角色及權(quán)限,而這些訪問控制功能的生效需要通過Realm來實(shí)現(xiàn)。Realm的認(rèn)證可以基于文本文件、數(shù)據(jù)庫表、LDAP服務(wù)等來實(shí)現(xiàn)。Realm的效用會遍及整個引擎或頂級容器,因此,一個容器內(nèi)的所有應(yīng)用程序?qū)⒐蚕碛脩糍Y源。同時,Realm可以被其所在組件的子組件繼承,也可以被子組件中定義的Realm所覆蓋。
應(yīng)用部署:tomcat的應(yīng)用程序必須被“部署”才能夠被訪問:
部署:是指將webapp及其所依賴的類庫等裝載進(jìn)tomcat實(shí)例,以便接收用戶請求的操作過程;
部署方式:
靜態(tài)方式(冷部署):在tomcat啟動之前進(jìn)行的部署;
動態(tài)方式(熱部署):在不打斷tomcat實(shí)例運(yùn)行的前提下,通過tomcat manager或其它的部署工具進(jìn)行的部署;
具體的部署工具:
Tomcat Manager
ANT腳本
TCD: tomcat client deployer
部署相關(guān)的操作:
Deploy:將webapp的源文件放置于目標(biāo)目錄、配置tomcat服務(wù)器能夠基于context中定義的路徑來訪問此webapp,并將其特有的類通過class loader裝載到tomcat實(shí)例上;
Redeploy:重新部署,常用于升級時;
Undeploy:反部署,停止webapp,并從tomcat實(shí)例移除其部分文件和部署名;
Stop:停止;
Start:啟動
webapp應(yīng)用程序:有多種歸檔格式
*.war:web應(yīng)用程序 *.jar:EJB類 *.rar:資源適配器 *.ear:企業(yè)級應(yīng)用程序
對于一個Web應(yīng)用程序而言,其通常由Servlets、JSP和其它文件等共同組成。這些文件通常被打包成WAR(Web Application Archive)格式,并以.war作為打包后的文件擴(kuò)展名。而Servlet規(guī)范則定義了在WAR內(nèi)部組織這些文件的標(biāo)準(zhǔn)目錄結(jié)構(gòu)。其目錄和功用如下:
/:Web應(yīng)用程序的根目錄,所有可被公開訪問的文件均放置于此處,如HTML、JSP和圖片文件等; /WEB-INF:此目錄為私有資源目錄,其內(nèi)部的所有文件和子目錄均不能被公開訪問;包含著此Web應(yīng)用程序的配置文件web.xml(程序結(jié)構(gòu)描述符文件)通常放置于此目錄; /WEB-INF/classes:當(dāng)前Web應(yīng)用程序的類文件的存在目錄; /WEB-INF/lib:可被打包為JAR格式的類文件通常放置于此目錄;
tomcat自帶的兩webapp:
manager:管理器
輸出狀態(tài)信息
部署webapp
host-manager:主機(jī)管理器
配置示例:定義管理頁面用戶名及密碼:
[root@node0 ~]# cd /usr/local/tomcat/conf [root@node0 conf]# vim tomcat-users.xml <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> [root@node0 conf]# service tomcat restart
訪問測試:
輸入用戶名和密碼:
服務(wù)狀態(tài)頁:
應(yīng)用管理頁:
主機(jī)管理頁:
手動定義一個資源:
[root@node0 ~]# mkdir -p /tomcat/webapps/test/WEB-INF/{classess,lib} [root@node0 ~]# cd /tomcat/webapps/test [root@node0 app]# vim index.jsp <%@ page language="java" %> <html> <head><title>JSP Test Page</title></head> <body> <h1><font color="red">node0.chencer.org</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("chencer.org","chencer.org"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>
定義虛擬主機(jī):
[root@node0 ~]# cd /usr/local/tomcat/conf [root@node0 conf]# vim server.xml <Engine name="Catalina" defaultHost="node0.chencer.org"> \\:默認(rèn)主機(jī)設(shè)置為node0.chencer.org; <Host name="node0.chencer.org" appBase="/tomcat/webapps" unpackWARs="true" autoDeploy="true"> </Host>
訪問測試:
實(shí)例:部署站點(diǎn)程序;
站點(diǎn)程序包:JspRun!_6.0.0_GBK.zip
部署站點(diǎn)文件:
[root@node0 ~]# unzip JspRun!_6.0.0_GBK.zip [root@node0 ~]# mv upload /tomcat/webapps/jsprun [root@node0 ~]# cd /tomcat/webapps/jsprun/ [root@node0 jsprun]# vim config.properties dbhost = 192.168.1.4 dbport=3306 dbuser = jruser dbpw = jrpass dbname = jrdb
定義虛擬主機(jī):
[root@node0 ~]# cd /usr/local/tomcat [root@node0 tomcat]# vim conf/server.xml <Host name="node0.chencer.org" appBase="/tomcat/webapps" unpackWARs="true" autoDeploy="true"> <Context path="/bbs" docBase="jsprun" /> </Host>
安裝并啟動mysql:
[root@node0 mysql-5.5-rpm]# yum install MySQL-shared-compat-5.5.48-1.el6.x86_64.rpm MySQL-client-5.5.48-1.el6.x86_64.rpm MySQL-server-5.5.48-1.el6.x86_64.rpm [root@node0 ~]# service mysql start
創(chuàng)建數(shù)據(jù)庫,并賦予權(quán)限:
[root@node0 ~]# mysql mysql> create database jrdb; Query OK, 1 row affected (0.00 sec) mysql> grant all on jrdb.* to \'jruser\'@\'192.168.1.4\' identified by \'jrpass\'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
站點(diǎn)安裝:
訪問測試:
新聞標(biāo)題:Tomcat(一):基礎(chǔ)配置詳解
分享網(wǎng)址:http://www.rwnh.cn/article8/cpocip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、Google、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)