1. 程式人生 > >配置Tomcat和在Eclipse中創建Web工程

配置Tomcat和在Eclipse中創建Web工程

javaweb tomcat


配置Tomcat服務器信息:

在Tomcat的安裝目錄下有一個conf目錄,裏面存放著Tomcat服務器的配置文件,其中最為核心的配置文件是server.xml,在這個文件裏我們可以配置服務器的各種參數,例如超時時間、連接數量、端口配置等等。

下面介紹一些日常中可能會去server.xml裏進行配置的參數:

  1. 超時時間

技術分享


  1. 最大連接數

技術分享

上圖中的:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

maxThreads="150" minSpareThreads="4" />

這是一個Executor 元素標簽,Executor 用來配置共享線程池的,其實最大連接數就取決於線程池裏的線程數量,所有的Connector都能共享這個線程池,要註意的是:這個標簽要寫在Connector之前。

關於以上Executor裏聲明的屬性解釋:

  1. name 此屬性是定義這個線程池的名字,這個名字必須唯一。

  2. namePrefix 此屬性是給每個線程池中的線程的name字符串設置一個前綴,這個前綴就是namePrefix 的值,而所謂的name字符串就是線程的線程號,默認值為tomcat-exec。

  3. maxThreads 此屬性定義好線程池的最大線程數量,也就是最大連接數量,默認值為200。

  4. minSpareThreads 此屬性定義Tomcat始終打開的最小線程數,也就是說無論如何Tomcat中的線程數量都不會小於這個屬性定義的數量,默認值為25。

除了以上用到的四種屬性之外,還有一個maxIdleTime屬性也比較經常會用到,這個屬性用來定義在Tomcat關閉一個空閑線程之前,允許空閑線程持續的時間,單位是毫秒,默認值為60000(一分鐘)。



  1. 端口

端口也就是Tomcat服務器的通信端口,默認為8080。所有的用戶都是通過這個端口來訪問Tomcat服務器,這個端口是可以自定義的,在Connector標簽的port屬性中定義:

技術分享

我們在開發實驗的過程中使用的默認8080端口,如果發布上線的話,需要改為80端口,80端口是http協議的默認端口號。


常見的默認端口號如下:

⑴. HTTP協議代理服務器常用端口號:80/8080/3128/8081/9080

⑵. SOCKS代理協議服務器常用端口號:1080

⑶. FTP(文件傳輸)協議代理服務器常用端口號:21

⑷. Telnet(遠程登錄)協議代理服務器常用端口:23


HTTP服務器,默認的端口號為80/tcp

HTTPS(securely transferring web pages)服務器,默認的端口號為443/tcp 443/udp;

Telnet(不安全的文本傳送),默認端口號為23/tcp(木馬Tiny Telnet Server所開放的端口);

FTP,默認的端口號為21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口);

TFTP(Trivial File Transfer Protocol),默認的端口號為69/udp;

SSH(安全登錄)、SCP(文件傳輸)、端口重定向,默認的端口號為22/tcp;

SMTP Simple Mail Transfer Protocol (E-mail),默認的端口號為25/tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口);

POP3 Post Office Protocol (E-mail) ,默認的端口號為110/tcp;

WebLogic,默認的端口號為7001;

Webshpere應用程序,默認的端口號為9080;

webshpere管理工具,默認的端口號為9090;

JBOSS,默認的端口號為8080;

TOMCAT,默認的端口號為8080;

WIN2003遠程登陸,默認的端口號為3389;

Symantec AV/Filter for MSE,默認端口號為 8081;

Oracle 數據庫,默認的端口號為1521;

ORACLE EMCTL,默認的端口號為1158;

Oracle XDB(XML 數據庫),默認的端口號為8080;

Oracle XDB FTP服務,默認的端口號為2100;

MS SQL*SERVER數據庫server,默認的端口號為1433/tcp 1433/udp;

MS SQL*SERVER數據庫monitor,默認的端口號為1434/tcp 1434/udp;

MySQL 數據庫,默認的端口號為3306/tcp;



  1. 發送關閉信息端口

這個端口在Server標簽上定義:

技術分享

Server標簽包含的是整個Tomcat服務器。它有三個屬性:

  1. className 此屬性定義服務器容器實現要使用的完全限定類名。

  2. port 此屬性定義接收關閉Tomcat請求的端口,這個端口只能從本地訪問,所以能夠阻止有人通過網絡來關閉你的服務器。

  3. shutdown 用來向port 定義的端口發送關閉服務器的命令字符串。如上圖就是會向8005發送SHUTDOWN命令。


  1. https加密協議端口

技術分享

同樣的如果是發布上線的話就要把8443改為443,因為https協議的默認端口號是443。


關於https協議:

https就是使用ssl加密的http協議,是一種加密的超文本傳輸協議。如果http不加密的話,被人抓包或監聽了數據包,就能很輕易地看到數據包裏面的數據內容,那樣的話你的信息就泄露了。

如果使用的是https協議,那麽你的數據包上傳和下載時都會被加密,即便被人抓包了,也沒有那麽輕易破解加密算法,因為數據包是被公鑰加密的只能使用服務器上的私鑰解密,而服務器根本不會在任何情況下發送私鑰,想要不通過私鑰來直接破解數據包幾乎是不可能的。

具體流程如圖:

技術分享


https協議是需要一個受信任的證書才能實現的,這個證書實際上就是一對密鑰(公/私)。而我們自己也可以通過一些工具來生成這對密鑰,這就叫做頒發證書。

自己頒發的證書是不受信任的,通過瀏覽器訪問時就會有一個警告,受信任的證書需要去一些註冊了的證書公司、網站上去購買,但是為什麽自己頒發的證書就不受信任呢?是因為不安全嗎?實際上不是的,這是因為我們自己制作的證書沒有去進行相關的信任註冊,沒有去和瀏覽器廠商掛鉤,而那些售賣的受信任證書就是去註冊了並且和瀏覽器廠商掛鉤了,所以瀏覽器才會認為是受信任的。

例如去訪問12306網站的https協議時瀏覽器也是會顯示不安全的連接:

https://www.12306.cn

技術分享

這不是因為天朝沒錢買證書,而是不信任那些外部購買過來的證書,所以才使用自己內部頒發的證書。

因此可以知道,顯示這個警告的原因僅僅是因為瀏覽器沒有認可這個證書,並非是真的不安全。


https原理詳細可以參考以下兩篇文章:

http://www.cnblogs.com/zery/p/5164795.html

http://www.jianshu.com/p/650ad90bf563




手動創建web工程

以上介紹了許多Tomcat服務器的相關配置,現在嘗試手動創建一個web工程吧:

  1. 首先在Tomcat的webapps目錄中創建一個工程文件夾,例如我創建一個名為myweb的一個文件夾:

技術分享


  1. 在myweb目錄下,創建一個WEB-INF文件夾

技術分享


  1. 然後在WEB-INF目錄下,分別創建classes和lib文件夾:

技術分享

classes是用來存放編譯後的java類文件的。

lib 裏面則是存儲jar包文件,也就是庫文件

除了classes和lib文件夾外,你還可以創建一個web.xml文件,這個web.xml文件在以前的web工程中是必須的,但是現在則是可選的,你可以創建一個也可以選擇不創建,為了簡單我這裏就不創建了,除了web.xml文件外這個WEB-INF目錄下也可以存放JSP文件。


  1. 然後返回到myweb目錄下,你站點的索引頁可以放在這個目錄下,所謂索引頁就是index.html或者.jsp文件,當用戶訪問該web工程目錄時不指定要訪問的頁面的話,就會默認訪問這個索引頁,所以要創建一個索引頁文件,示例:

技術分享

然後往這個html文件中寫上一些內容:

技術分享


到目前為止,我們的一個簡單的web工程就構建好了,現在打開Tomcat服務器,然後使用瀏覽器訪問這個web工程,就會默認訪問index.html文件,然後根據裏面的內容就會顯示Hello My Web:

技術分享

技術分享


工程目錄的結構的思維導圖:

技術分享


如果你不創建這個index.html索引頁文件的話,就會出現404狀態碼,例如我現在把index.html給刪掉再訪問:

技術分享

這個404狀態碼意思是找不到文件,這種情況出現於你訪問一個不存在的文件時,就會出現這個狀態碼。

關於http狀態碼可參考以下教程:

http://www.runoob.com/http/http-status-codes.html



除此之外我們還可以把web工程打包成war包放在webapps目錄下,這樣也是發布工程的方式一種,所謂war包其實就是一個zip格式的壓縮包,只不過後綴名改為了war罷了。現在就可以把剛剛構建的工程打成war包:

技術分享

技術分享


手動打war包的時候要註意一點,不要打包myweb這個目錄,而是打包它裏面的WEB-INF和index.html:

技術分享

技術分享


因為Tomcat是支持熱部署的,所以需要先把Tomcat關掉,然後把war包剪切出來把原本的工程刪掉,這時候就相當於發布了這個war包,接下來再把Tomcat啟動,會發現war包被解壓縮了:

技術分享


這時候使用瀏覽器去訪問myweb,依舊是顯示Hello My Web:

技術分享

如圖代表發布成功。


除了手動構建工程和使用war包的方式發布工程外,還可以發布外部工程,也就是說發布不存放在webapps目錄下的工程,這種叫做外部發布,例如我現在把war包剪切到E盤根目錄下,並解壓:

技術分享


然後就是去server.xml中配置一段內容:

技術分享

Context中的屬性:

  1. path 定義在瀏覽器URL上填寫的訪問工程名稱

  2. reloadable 定義是否支持熱部署,所謂熱部署也就是說只要某個文件的源碼發生更改,服務器就會自動重新加載該web應用。

  3. docBase 定義外部工程的路徑


修改完配置文件後,通過瀏覽器訪問myweb看看是否成功:

技術分享



思維導圖:

技術分享












在Eclipse中創建Web工程

介紹完如何手動創建和發布web工程後,當然得試一下在Eclipse中創建並發布web工程,因為在實際的日常開發環境中一般極少會使用手動的方式去創建和發布web工程,都是通過工具來進行創建和發布,比如通過Eclipse(這裏的Eclipse必須是for JavaEE版本)。

創建web工程之前我們首先得配置Tomcat到Eclipse中,打開Servers控制臺:

技術分享


打開後在下方可以看到Servers控制臺:

技術分享


然後點擊上圖中的那段文字,進入到以下界面:

技術分享


開始配置:

技術分享

技術分享

技術分享



現在Tomcat就配置好了,下方的Servers控制臺也出現了Tomcat:

技術分享


然後工程目錄下也出現了Tomcat服務器的目錄:

技術分享



配置完Tomcat了,現在就可以創建一個web工程了,右鍵點擊選擇動態工程:

技術分享

技術分享

技術分享

技術分享



現在就創建好了這樣的一個web工程:

技術分享


現在我們在WEB-INF目錄下,創建一個索引頁文件(index.html):

技術分享

技術分享

技術分享


編輯文件內容如下:

技術分享

創建完成:

技術分享


好了,web工程算是構建完成了,接下來就是進行發布到Tomcat服務器上了,右鍵點擊Tomcat:

技術分享


將工程添加進去:

技術分享

技術分享


現在打開Tomcat目錄可以看到工程已經發布進去了:

技術分享


接下來就是啟動Tomcat並使用瀏覽器訪問了:

技術分享


啟動成功,並且控制臺上會打印很多日誌信息:

技術分享

技術分享


通過瀏覽器訪問:

技術分享

成功訪問


在Eclipse上雖然是發布工程到Tomcat,但是卻不是發布到Tomcat主目錄下的webapps目錄中,現在打開webapps目錄是找不到myweb工程的:

技術分享


那麽如何找到這個工程發布的路徑呢?查看Tomcat啟動時在控制臺中打印的日誌信息就可以找到:

技術分享


復制路徑,然後粘貼到“我的電腦”中的地址欄上,回車就可以進入到該目錄:

技術分享


這一點要註意:這是因為在Eclipse中運行的Tomcat是一個副本而不是原本,所以如果在Eclipse中修改server.xml配置文件時出現配置不生效的情況,可以去修改原本的server.xml文件試一下。



本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1977657

配置Tomcat和在Eclipse中創建Web工程