zoukankan      html  css  js  c++  java
  • Linux上的Tomcat地址映射,且404错误解决 ss

    问题:现在想要加一个下载文件功能,但是文件地址不在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方法直接打开文件而不是下载文件,这个是由于浏览器原因,并且要把项目发布到服务器上,我用谷歌就可以下载文件了。

  • 相关阅读:
    关于response.getWriter()写回数据的实际发生时间点
    警惕多iframe下的同名id引起的诡异问题
    spring注入静态成员变量提示invalid setter method
    plsql+绿色版oracle连接远程数据库配置及提示缺少msvcr71.dll解决方法
    <mvc:default-servlet-handler/>导致SimpleUrlHandlerMapping失效
    maven项目下jsp文件中el表达式失效问题
    Python爬虫框架Scrapy实例(三)数据存储到MongoDB
    Python爬虫实例(五) requests+flask构建自己的电影库
    MySQL与Python交互
    Python爬虫基础(四)Requests库的使用
  • 原文地址:https://www.cnblogs.com/cccaroline/p/12195620.html
Copyright © 2011-2022 走看看