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;
  }



目录
相关文章
|
23天前
|
人工智能 API 开发者
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
491 71
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
|
15天前
|
存储 缓存 监控
阿里云服务器配置与云盘容量选择参考:实例规格、云盘等相关配置选择解析
对于初次接触云服务器的用户来说,面对众多配置选项和云盘容量选择,可能会不知道如何选择。有些用户甚至不清楚云服务器应该购买多大容量的云盘,也不知道哪一款配置的云服务器更适合自己的业务。本文将详细探讨这两个问题,并结合阿里云服务器的特点,为您提供一份云服务器配置与云盘容量选择指南,以供了解和选择参考。
|
12天前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
69 20
|
8天前
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
46 14
|
8天前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
45 11
|
7天前
|
弹性计算 缓存 安全
阿里云服务器4核16G配置整理:ECS实例规格、CPU型号及适用场景说明
阿里云ECS服务器4核16G配置提供了多种实例规格选择,如高主频通用型hfg8i(Intel第四代Xeon处理器,全核睿频3.9GHz)、经济型e、通用型g8i/g7等,满足不同业务需求。其中,hfg8i为官方推荐,适合高性能计算;经济型e在活动中更具性价比。各规格覆盖游戏服务器、数据库系统、数据分析、AI训练等多种场景,用户可根据实际需求选择合适的CPU型号与使用场景。更多详情可参考阿里云官方文档。
61 2
|
26天前
|
Java 关系型数据库 MySQL
JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用
以上就是JDK、Tomcat、MariaDB数据库和Profile多环境的配置与使用的基本步骤。这些步骤可能会因为你的具体需求和环境而有所不同,但是基本的思路是一样的。希望这些信息能够帮助你更好地理解和使用这些工具。
63 17
|
28天前
|
Ubuntu 安全 网络安全
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
87 13
|
1月前
|
存储 弹性计算 数据处理
阿里云服务器2核8G、4核16G、8核32G配置热门实例价格、性能与场景全攻略
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型c7、通用型g8i和通用型g8y五种实例可选,虽然配置相同,但是这些实例规格之间的价格差别是很大的。面对不同配置和类型的云服务器实例,有的新手用户往往因为不知道他们之间的区别,所以不知道如何选择。本文将针对常见的2核8G、4核16G、8核32G配置,深入剖析阿里云服务器中的经济型e、通用算力型u1、通用型g7及通用型g8y实例,以供大家参考和选择。
|
21天前
|
存储 缓存 弹性计算
阿里云经济型e实例云服务器评测:企业官网搭建的性价比之选
阿里云服务器经济型e实例可以用来搭建企业网站吗?云服务器作为搭建企业官网的基础设施,其性能、稳定性、成本等因素直接影响着官网的运营效果。阿里云经济型e实例云服务器作为一款性价比较高的产品,备受用户关注。许多企业在选择云服务器搭建官网时,都会将其纳入考虑范围。本文将详细探讨阿里云经济型e实例云服务器的特点、性能表现、稳定性与可靠性,以及成本考量,最终解答是否适合用它来搭建企业官网。