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



目录
相关文章
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
69 9
|
26天前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
39 1
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
18天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
26天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
45 6
|
29天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
49 4
|
1月前
|
前端开发 Java 应用服务中间件
Tomcat和Nginx的资源路径映射
Tomcat和Nginx的资源路径映射
34 1
|
1月前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
1月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
65 3
|
5天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
6天前
|
SQL 弹性计算 安全
阿里云上云优选与飞天加速计划活动区别及购买云服务器后续必做功课参考
对于很多用户来说,购买云服务器通常都是通过阿里云当下的各种活动来购买,这就有必要了解这些活动的区别,同时由于活动内的云服务器购买之后还需要单独购买并挂载数据盘,还需要设置远程密码以及安全组等操作之后才能正常使用云服务器。本文就为大家介绍一下目前比较热门的上云优选与飞天加速计划两个活动的区别,以及通过活动来购买云服务器之后的一些必做功课,确保云服务器可以正常使用,以供参考。
下一篇
DataWorks