Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業 ”的價值觀,專業網站建設服務10余年為成都混凝土泵車小微創業公司專業提供成都企業網站定制營銷網站建設商城網站建設手機網站建設小程序網站建設網站改版,從內容策劃、視覺設計、底層架構、網頁布局、功能開發迭代于一體的高端網站建設服務。
servlet(應用程序或者容器)是java提供的用于開發web服務器應用程序的一個組件,運行在服務器端,有servlet用于生成動態頁面內容,servlet是平臺立的java類,編寫一個servlet,實際上就是安裝servlet規范編寫一個java類
Tomcat 處理請求和響應的過程是由servlet的程序來完成的,并且servlet是為例解決實現動態頁面而衍生的東西,與我們之前了解的nginx或者apache想要實現動態頁面需要和php服務器溝通的過程差不多,可以把servlet比作成php
Tomcat 是web應用服務器,是一個servlet/jsp容器,tomcat作為servlet容器,負責處理客戶請求,并將servlet的響應傳送給客戶,而servlet是一種運行在java語言的服務器上的組件,servlet最常見的用途是擴展java web服務器功能,提供非常安全的,可以移植的(打包網頁代碼就可以在另外一個環境中運行,如linux系統跟windows環境),易于使用cgi替代品。
1.Tomcat是運行在JVM中的一個進程。它定義為【中間件】,顧名思義,是一個在Java項目與JVM之間的中間容器。
2.Web項目的本質,是一大堆的資源文件和方法。Web項目沒有入口方法(main方法),,意味著Web項目中的方法不會自動運行起來。
3.Web項目部署進Tomcat的webapp中的目的是很明確的,那就是希望Tomcat去調用
寫好的方法去為客戶端返回需要的資源和數據。
4. Tomcat可以運行起來,并調用寫好的方法。那么,Tomcat一定有一個main方法。
5. 對于Tomcat而言,它并不知道我們會有什么樣的方法,這些都只是在項目被部署進webapp下后才確定的,由此分析,必然用到了Java的反射來實現類的動態加載、實例化、獲取方法、調用方法。但是我們部署到Tomcat的中的Web項目必須是按照規定好的接口來進行編寫,以便進行調用
6.Tomcat如何確定調用什么方法呢。這取卻于客戶端的請求,http://127.0.0.1:8080/JayKing.Tomcat.Study/index.java?show這樣的一個請求,通過http協議,在瀏覽器發往本機的8080端口,攜帶的參數show方法,包含此方法的路徑為JayKing.Tomcat.Study,文件名為:index.java。
1、瀏覽器發送請求數據
2、tomcat收到服務器的請求數據,由servlet容器處理并進行解析,并且把客戶端的數據請求request改變成servlet request 交給后端的servlet 實例(或者或叫對象)實例收到客戶端的請求數據的請求對象,進行出處理客戶端的請求,處理完成后將數據響應給servlet容器,響應給servlet容器叫做servlet response。
3、Servlet收到的實例的響應數據交給客戶端(如圖)
Servlet(tomcat)容器與servlet實例需要通過java servlet api接口進行通信,api接口是由開發人員在寫代碼的時候定義或者編寫的
4.servlet容器將收到的響應數據交給客戶端
Servlet在Java代碼中可以通過HttpServletResponse對象動態輸出HTML內容;
JSP在靜態HTML內容中嵌入Java代碼,然后Java代碼在被動態執行后生成HTML頁面;
運行時占用的資源小,擴展性好,支持負載均衡和郵件服務器等開發應用系統常用的功能
下載Tomcat所需的軟件包
[root@localhost ~]# rpm -qa | grep jdk
\\查詢已安裝的jdk包
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 --nodeps
\\卸載系統自帶的jdk環境
[root@localhost ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# vim /etc/profile
//編寫系統環境變量,在最后一行加以下內容
export JAVA_HOME=/usr/local/jdk1.8.0_211 //指定java的路徑
export JRE_HOME=/usr/local/jdk1.8.0_211/jre //java運行環境
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
//聲明java中的類,類就是一類事務的屬性,如各種蓋飯最終他們的屬性是飯
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
//將定義的變量添加到系統環境變量中
[root@localhost ~]# source /etc/profile //重新加載系統環境變量文件
[root@localhost ~]# tar zxf apache-tomcat-8.5.35.tar.gz
[root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh \\啟動tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 16320/java
Bin:存放windows或linux平臺上啟動或者關閉tomcat的腳本文件
Conf:存放tomcat服務器的全局配置文件,其中最重要的是server.xml和web.xml
Lib:tomcat運行需要的庫文件(jars)
Logs:tomcat運行時產生的日志文件
Temp:臨時文件存放目錄
Work:tomcat的工作目錄,存放tomcat運行時的編譯配置文件
Webapps:網頁文件存放路徑
Tomcat常用配置文件說明
Server.xml:tomcat的主配置文件,可以設置端口號,設置域名或者IP
Web.xml: 缺省的web app配置(也可以理解為是實現主配置文件沒有定義到的功能:如目錄遍歷,定義錯誤頁面類型)
Tomcat-users.xml:用來配置管理tomcat的用戶與權限
Server:代表整個容器,實例的頂層元素,一個配置文件中只能有一個server元素,可以包含多個service。比如:
<Server port="8005" shutdown="SHUTDOWN">
//表示關閉Tomcat,使用telnet連接8005,輸入shutdown指令
Service:提供完整jvm的獨立組件,jvm表示Java虛擬機,是一個虛構出來的虛擬機,可以包含一個engine包含多個connector;
<Service name="Catalina">
//代表接受所有tomcat接受的請求,如果是Service name="apache"則表示接受所有apache轉發過來的請求
Connector:接口定義,負責接受客戶端的請求,以及向客戶端返回響應的結構;
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
//port:接受數據的端口;protocol:設置http協議;
//Connection Timeout:與客戶端的連接超時時間,-1代表不限制客戶端的連接時間;
//Redirectport :當客戶端請求是https將請求轉發到8443去
Engine:處理客戶端的請求,可以包含多個hots;
<Engine name="Catalina" defaultHost="localhost">
//name:是引擎名稱,處理客戶的請求默認去尋找localhost
Host:定義的虛擬主機,為特定的虛擬主機處理所有的客戶端請求;
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
Context:運行在虛擬主機中的單個web應用;
過程
①用戶點擊網頁內容,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得;
②Connector把該請求交給它所在的Service的Engine來處理,并等待Engine的回應;
③Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host;
④Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機),名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理);
⑥path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet,對應于JspServlet類;
⑥構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序;
⑦Context把執行完之后的HttpServletResponse對象返回給Host;
⑧Host把HttpServletResponse對象返回給Engine;
⑨Engine把HttpServletResponse對象返回Connector;
⑩Connector把HttpServletResponse對象返回給客戶Browser;
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
\\在zhe這個Hostname下添加以下內容
<Context path = "/xws" docBase = "/data/project" debug = "0" reloadable = "false" crossContext = "true">
</Context>
Path:指出訪問的路徑
docBase:指定存放的路徑
Debug:指定debug的等級為0輸出信息最少,9提供最多信息
Reloadable:為ture時當web.xml文件有改動的時候自動重新加載,不用重啟服務
CorssContext:為ture時表示不同的context共享一個session(會話池)
[root@localhost ~]# mkdir -p /data/project
[root@localhost ~]# vim /data/project/index1.jsp
aaaaaaa
[root@localhost ~]# vim /data/project/index2.jsp
bbbbbbb
[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml
\\大約在112行中把false改為true
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh \\關閉服務
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh \\啟動服務
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
//在host中添加
<Context path="/jiankong" docBase="/jk/jiankong" debug="0" reloadable=" false" crossContext="true"/>
[root@localhost /]# mkdir /jk/jiankong -p
[root@localhost /]# vim /jk/jiankong/index.jsp
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory: "+tm+"MB"+"<br>");
out.println("Free memory: "+fm+"MB"+"<br>");
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh //重啟tomcat服務
[root@localhost /]# vim /usr/local/tomcat/bin/catalina.sh
#----- Execute The Requested Command ----------------------------------------- //填寫的內容必須在這行下面大約在309行
CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
[root@localhost /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
[root@localhost management]# cp jmxremote.password.template jmxremote.password
[root@localhost management]# vim jmxremote.password //在最后一行添加,定義用戶為xws,密碼為123456,使用“wq!”強制保存退出
xws 123456
[root@localhost management]# vim jmxremote.access //定義用戶權限的文件
xws readwrite \ //在倒數第三行。把原有的用戶改為xws
[root@localhost management]# chmod 600 jmxremote.access
[root@localhost management]# chmod 600 jmxremote.password
[root@localhost management]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost management]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# netstat -anpt | grep 8888
tcp6 0 0 :::8888 :::* LISTEN 58760/java
//確認剛才定義的端口8888在監聽
[root@localhost /]# . /etc/profile
\\更新環境變量
[root@localhost /]# jconsole
[root@localhost /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.keystore -validity 36500
//alias:別名,這里設置為tomcat;
//keyalg:證書算法,RSA;
//validity:證書有效期,單位為天
//keystore:指定證書存放路徑,可以自定義
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]: xws
您的組織單位名稱是什么?
[Unknown]: aaa
您的組織名稱是什么?
[Unknown]: bbb
您所在的城市或區域名稱是什么?
[Unknown]: ccc
您所在的省/市/自治區名稱是什么?
[Unknown]: wwwe
該單位的雙字母國家/地區代碼是什么?
[Unknown]: qwe
CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe是否正確?
[否]: y
正在為以下對象生成 2,048 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期為 36,500 天):
CN=xws, OU=aaa, O=bbb, L=ccc, ST=wwwe, C=qwe
輸入 <tomcat> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
[正在存儲/usr/local/tomcat/conf/tomcat.keystore]
Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore /usr/local/tomcat/conf/tomcat.keystore -destkeystore /usr/local/tomcat/conf/tomcat.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml //可以添加也可以從原有的內容稍作修改即可
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" //將原本的8443改為443
maxThreads="150" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/conf/tomcat.keystore" //指定證書存放路徑
keystorePass="123456"> //指定生成證書所輸入的密碼
</Connector>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
當前題目:Tomcat的安裝和配置
轉載來源:http://m.newbst.com/article26/iigdjg.html
成都網站建設公司_創新互聯,為您提供ChatGPT、網站建設、電子商務、微信公眾號、網站排名、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯