Tomcat配置虚拟路径,使上传文件与服务器分离

简介: Tomcat配置虚拟路径,使上传文件与服务器分离

【1】eclipse下配置Tomcat虚拟路径映射

遇到问题介绍:项目中上传文件到服务器。如果使用tomcat下的目录作为上传图片的路径,则每次重启服务器图片将消失。

因为开发工具的项目中没有该图片,每次重启服务器重新部署的时候将会删除开发工具的项目中不存在的文件

解决:可以使用tomcat的配置文件将某个请求 映射到 物理路径下 ,完成图片的回显—在Tomcat的server.xml设置虚拟路径!


如,请求http://localhost:8080/upload/resources/1.jpg,让其自动去本机D盘D:\upload\resources路径下寻找


操作步骤:


找到Tomcat/conf/server.xml文件

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
      <Context docBase="MavenWebProject" path="/MavenWebProject" reloadable="true" source="org.eclipse.jst.jee.server:MavenWebProject"/>
    <Context docBase="JavaSE-JS" path="/JavaSE-JS" reloadable="true" source="org.eclipse.jst.jee.server:JavaSE-JS"/>
    <!-- 这里添加以下语句-->
    <!--  To Solve upload file -->
    <Context path="/upload/resources/" docBase="D:\upload\resources\"></Context>
    </Host>

重启Tomcat,这样当请求http://localhost:8080/upload/resources/1.jpg,

服务器会自动去本机D盘D:\upload\resources路径下寻找图片1.jpg。


上面示例没有添加contextPath,如果访问URL存在contextPath呢?如下所示:

# url
http://localhost:8080/furniture/upload/1.jpg
# 虚拟路径设置
 <Context docBase="D:\my\upload\" path="/furniture/upload" reloadable="true"/>

这里处理的是动态上传图片并且进行图片回显。

如果是Eclipse下项目中的静态资源文件,部署的时候会同时部署到Tomcat/webapps(Eclipse默认的项目发布目录不是为Eclipse自身下的一个文件夹,请手动修改)下。

可以直接请求,不用进行目录映射。

题外话

如果Tomcat重启后,发现修改的server.xml自动还原了。

两种解决思路:

① 修改Eclipse工具下的Servers里面的server.xml , 使其保证与你想要修改成的目标一致。

因为自动发布的时候,会默认加载这里面的context.xml 和 server.xml !

② 取消自动发布 !

【2】IDEA下配置虚拟路径映射

如果你使用的是idea运行项目,那么按照上面方式修改server.xml不生效。可以在idea中配置,如下图:


【3】上传到项目路径下

虚拟路径映射有一定难度,而且项目拷贝还需要拷贝制定文件夹。所以也可以考虑上传到项目路径下。

代码示例:

  /**
   * 根据字符串创建本地目录 并按照日期建立子目录返回
   * @param path
   * @return
   */
  private String getFolder(String path) {
    SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd");
    path += "/" + formater.format(new Date());
    File dir = new File(this.getPhysicalPath(path));
    if (!dir.exists()) {
      try {
        dir.mkdirs();
      } catch (Exception e) {
        this.state = this.errorInfo.get("DIR");
        return "";
      }
    }
    return path;
  }
/**
   * 根据传入的虚拟路径获取物理路径
   *
   * @param path
   * @return
   */
  private String getPhysicalPath(String path) {
    String servletPath = this.request.getServletPath();
    String realPath = this.request.getSession().getServletContext()
        .getRealPath(servletPath);
    return new File(realPath).getParent() +"/" +path;
  }



目录
相关文章
|
16天前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
53 22
|
1天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
10天前
|
NoSQL Linux PHP
|
16天前
|
JavaScript 前端开发 Java
vue2知识点:vue-cli脚手架配置代理服务器
vue2知识点:vue-cli脚手架配置代理服务器
47 7
|
16天前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
46 4
|
12天前
|
Web App开发 安全 网络安全
tplink虚拟服务器设置方法
为了更全面地理解云服务及其在企业应用中的角色,推荐访问,他们提供了一系列高性能、安全稳定的云服务器解决方案,包括但不限于香港云服务器、高防服务器等,特别适合寻求全球化业务扩展的企业。蓝易云不仅拥有全球化的基础设施布局,还提供针对各种行业定制的全栈云解决方案,助力企业实现云端部署,跨越传统界限,即刻启航云端之旅。
19 0
|
17天前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
102 0
|
17天前
|
弹性计算 安全 网络协议
如何创建VPC并配置安全组以保护您的阿里云服务器
如何创建VPC并配置安全组以保护您的阿里云服务器
|
27天前
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
141 7
|
27天前
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
203 4