Linux上的Tomcat地址映射,且404錯誤解決


問題:現在想要加一個下載文件功能,但是文件地址不在tomcat的webapps下,需要通過地址映射到tomcat下面再通過鏈接執行下載文件功能。

解決方法有兩種:

方法一:

用方法一的前提是不用啟動服務器(因為我不是在windows上面執行操作,而是在linux上面的服務器上面進行文件地址映射),否則通過方法一只是重啟tomcat,而不重啟服務器就會出現404錯誤。

方法:找到tomcat-conf-server.xml文件打開,在文件最后Host添加如下<Context />中的代碼:(紅色的代碼是新添加的代碼)

 1       <Host name="localhost"  appBase="webapps"
 2             unpackWARs="true" autoDeploy="true">
 3 
 4         <!-- SingleSignOn valve, share authentication between web applications
 5              Documentation at: /docs/config/valve.html -->
 6         <!--
 7         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
 8         -->
 9 
10         <!-- Access log processes all example.
11              Documentation at: /docs/config/valve.html
12              Note: The pattern used is equivalent to using pattern="common" -->
13         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
14                prefix="localhost_access_log." suffix=".txt"
15                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
16         <Context path="/txt" docBase="/data/txt" reloadable="true" crossContext="true"/> 
17     
18  </Host>

含義:若windows中訪問localhost:8080/txt/1.txt其實訪問的就是D:/data/txt/1.txt文件,也就是說文件實際存放地址是docBase=D:/data/txt/1.txt,瀏覽器訪問地址是path...

若Linux中類似,也就是訪問http://39.xxx.xxx.xxx:18010/txt/1.txt,其實訪問的就是Linux服務器中的docBase中的文件,這個docBase可以是相對地址也可以是絕對地址。

我是在Linux服務器上進行地址映射的,若改動配置文件,那么僅僅重啟tomcat是不行的,需要重啟整個服務器才可以,但是服務器上運行東西較多,所以此方法不合適。由此使用方法二。

(令記錄下tomcat在服務器上重啟的方法:

命令行cd 路徑到tomcat/bin 下,執行shutdown.sh是關閉的,之后在執行startup.sh是開啟的

1 //退出路徑
2 cd ..
3 //進入路徑
4 cd tomcat/bin
5 //執行文件
6 ./shutdown.sh
7 ./startup.sh

)

(令無意發現若配置tomcat/conf/web.xml,則瀏覽器打開文件夾時會顯示文件列表,否則會報404找不到文件的錯誤。

1 <init-param>
2             <param-name>listings</param-name>
3             <param-value>true</param-value>
4 </init-param>

把false改為true,就可以了)

方法二:

此方法不需要啟動服務器,也是在linux上操作的。

方法:在tomcat/conf/Catalina/localhost文件夾下新建upload.xml文件(路徑不全的新建文件夾補全),寫如下代碼:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <Context docBase="/data/txt" reloadable="true"></Context>

含義:若Linux中訪問http://39.xxx.xxx.xxx:18010/upload/1.txt其實訪問的就是data/txt/1.txt文件,也就是說文件實際存放地址是docBase=data/txt/1.txt,瀏覽器訪問地址是新建xml的文件名upload...

 注:不知什么原因,經過方法二之后文件是可以打開的,但是經過一段時間之后出現404找不到文件的錯誤,百度了好久都未果,最后重新改一下upload.xml文件名為in.xml,就可以打開文件了,而且可以再換回upload.xml,之后再打開文件就可以了。

 

最后,我是為了下載文件功能的,有些方法比如window.open方法直接打開文件而不是下載文件,這個是由於瀏覽器原因,並且要把項目發布到服務器上,我用谷歌就可以下載文件了。


免責聲明!

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



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