tomcat8總結默認端口默認項目,以及圖片上傳和展示的路徑問題.


一.關於tomcat是常用的服務器軟件,下面是總結關於正常的項目在tomcat上運行的幾個問題.

  環境 :

  • 操作系統:windows7
  • tomcat版本:apache-tomcat-8.0.39
  1. tomcat的默認端口是8080,訪問一個新的沒有經過設置的tomcat的主頁應該是這樣訪問= http://域名:端口號,例如http://haha.com:8080,本地的tomcat沒有域名的情況下就是http://localhost:8080,但是一般的網址是沒有端口號的,直接訪問就可以訪問網站,這需要怎么設置呢?
  2. 如果存在多個web項目,那怎么讓訪問者訪問指定的一個默認項目呢?
  3. 上傳圖片或者文件的路徑是保存在哪里?上傳后又怎么展示出來?
  • 問題1,tomcat的默認端口為8080,web訪問的默認端口為80,例如:www.baidu.com:80等同於www.baidu.com,所以我們只要修改訪問的默認端口為80就可以了。

在tomcat的安裝目錄如下圖:

其中,tomcat的配置文件放在conf這個文件夾下,進入這個文件夾,會看到一個server.xml文件,最好用帶有xml文檔高亮的編輯器打開這個文件,實在沒有用記事本打開也可以,找到下面這段。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8449" />

上面這段代碼中的port 就是默認訪問的端口,將它改為80,保存server.xml文件就修改了默認端口。

但是僅僅經過這樣的修改還是不行的,原因是每次tomcat啟動后都會生成一個ROOT的項目,就是測試tomcat安裝成功沒有的那個界面,也就是說假如你的項目名稱為pdc,你輸入localhost訪問的是localhost/ROOT這個項目,而並非localhost/pdc

  • 問題2,設置默認項目如果你想輸入localhost直接訪問pdc項目,還是在server.xml文件中找到這段
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

</Host>

在這段代碼中插入如下代碼:

<Context path="" docBase="pdc" debug="0" reloadable="true" />

這段代碼的意思是 Context path為訪問域名下面的路徑,這里為""是空,效果就是指定 localhost:80/""這個地址,docBase就是項目名稱pdc ,就是說明如果項目名稱為空,訪問的就是pdc

如上配置完成后,直接輸入localhost  就等同於localhost:80/pdc

但是我們知道,將項目打成,pdc.war包后,直接復制項目到tomcat的webapps目錄下,啟動tomcat就會加載項目,但是你在運行之前,清空了webapps目錄下的所有項目,如上配置后,再啟動,其實會生成兩個項目,一個是ROOT項目,一個是pdc項目

這兩個項目完全一模一樣,如果單是訪問的話,無所謂,展示的東西都是一樣的。但是如果我訪問的是ROOT項目,我上傳了一張圖片,然后再訪問pdc項目會不會展示圖片呢?結果是,圖片將無法找到。

這就產生了一個圖片上傳的問題。

  • 問題3,tomcat8上傳圖片與展示圖片路徑的問題

  其實,並非只跟路徑有關,和項目也有關系,正常的思路是,你將請求上傳的圖片,用后台處理改名,存入一個項目指定的文件夾下,例如這個文件夾叫images,你上傳后,就放到images里面了。但是后台代碼的圖片路徑一般不會寫成固定的類似這種“/pdc/iamges”如果是這樣寫,項目一改名,代碼就會出錯了,所以獲得圖片上傳的路徑一般都會用session.getContext().getRealPath()或者session.getContext().getContextPath()這樣的方法直接獲得路徑,這樣的話,如果你訪問的是www.abc.com上傳的圖片,會存入到你的tomcat下webapps/ROOT/images里,如果你數據庫存放的是圖片的路徑的話,那么可能就會得到//images這樣的路徑,如果你是www.abc.com/pdc訪問的項目,並且上傳了文件,你數據庫里將會得到這樣的路徑/pdc/iamges

所以很多剛接觸tomcat的人,上傳圖片成功了,但是展示卻出了問題,原因就是在這。要想避免這樣的問題發生,其實方法還是有很多的,比如統一路徑,在代碼中就固定把文件固定放在/ROOT/images下,這樣就只有ROOT的這個項目下有images這個文件夾,即使訪問了pdc 存放路徑也可以放到/ROOT下的images下。所以問題就是,如果你只有一個項目,你配置了默認項目的話,也會生成一個一模一樣的ROOT項目,而ROOT上傳的圖片在ROOT/images下,訪問pdc上傳的圖片,存放在pdc/images下。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM