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 "%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方法直接打开文件而不是下载文件,这个是由于浏览器原因,并且要把项目发布到服务器上,我用谷歌就可以下载文件了。