問題:現在想要加一個下載文件功能,但是文件地址不在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 "%r" %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方法直接打開文件而不是下載文件,這個是由於瀏覽器原因,並且要把項目發布到服務器上,我用谷歌就可以下載文件了。