Javaweb上传图片或文件到服务器,Tomcat服务器重新部署项目,会删除原来上传的文件的问题

解决办法!!!

你按这几个步骤去做,就能解决问题:
1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:

<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

3.修改/tomcat/conf/server.xml文件:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- 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 -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>

其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到你的工程了,
你上传的图片就不会跑到/tomcat/webapps/目录,而是直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!

再来解释一波!

D:\project\myProject\editor\WebRoot 这个路径是项目的web根目录,editor是项目名称, 那么D:\project\myProject\editor\src 就是你存放java文件的根目录了
/ser 就是项目应用的名称了,或者说是上下文路径,这个名称可以随意修改
如果你的tomcat端口是 8080, 那么项目的访问路径就是 http://localhost:8080/ser
上传时就会在D:\project\myProject\editor\WebRoot\ 目录中创建文件夹
不管你怎样重启项目,或者清理缓存,上传的文件依然存在, 因为上传的文件都已经存在于你的项目中
这样方式只需要部署一次,没有重新部署的说法

如果你是在eclipse中点来点去的部署项目,也就等于是把D:\project\myProject\editor\WebRoot目录的所有文件和文件夹都复制到了 /tomcat/webapps/editor/目录下,那么项目的访问路径就是 http://localhost:8080/editor
上传时就会在 /tomcat/webapps/editor/ 目录中创建文件夹
只要重新部署或清理缓存,上传的文件都烟消云散了
因为重新部署时,先删除 /tomcat/webapps/editor/ 目录,再复制一遍D:\project\myProject\editor\WebRoot目录的所有文件和文件夹

总结

其实就是我们的开发工具eclipse或者myeclipse导的鬼
部署web项目,别在eclipse中点来点去的部署,那样虽然快捷,但实际上是复制项目到tomcat,有很多弊端!
修改tomcat的配置文件正好解决这个问题,
你反过来想一想,javaweb项目的服务器一般都是linux系统,linux系统中不可能安装eclipse,
所以在linux系统中部署项目,就是修改配置文件,然后运行命令启动tomcat,
重新redeploy的时候 tomcat 会同步你本地的文件 因为你本地没有相应的文件夹 自然导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
这样部署后,request.getSession().getServletContext().getRealPath(“/”);得到的是项目的WebRoot根目录,比如:D:\project\myProject\editor\WebRoot,上传文件时的文件夹自然就会创建在项目中,
如果你在eclipse中点来点去的部署,得到的却是tomcat的webapps根目录,文件夹就会创建在tomcat中,

  • 12
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将Java Web项目部署Tomcat服务器可以通过以下步骤进行: 1. 首先,确保已正确安装和配置了Tomcat服务器。打开Tomcat文件夹,找到conf文件夹下的server.xml文件,并确保其中配置了正确的端口号。另外,还需确保在Tomcat的bin文件夹下存在catalina.bat(或catalina.sh)文件。 2. 在Tomcat的webapps文件夹下创建一个新的文件夹,用于存放项目文件。假设我们将该文件夹命名为"myproject"。 3. 将打包好的Java Web项目(通常为war文件)复制到"myproject"文件夹中。 4. 打开命令行终端,切换到Tomcat的bin目录下。执行"catalina.bat"(或"catalina.sh",根据操作系统而定)命令启动Tomcat服务器。 5. 在浏览器中输入"http://localhost:端口号/myproject",即可访问部署Tomcat服务器上的Java Web项目。 6. 如果想要重新部署项目,可以先关闭Tomcat服务器,在"myproject"文件夹下删除原来的war文件和解压后的文件夹,然后将新的war文件复制到该文件夹中,并重新启动Tomcat服务器。 注意事项: - 在部署项目之前,确保项目的配置文件(如web.xml)中的路径和服务器上的路径相匹配。 - 如果项目需要与数据库进行交互,还需确保数据库的连接配置正确,并在Tomcat的lib文件夹下添加数据库驱动的jar文件。 - 部署过程中可能遇到一些问题,如端口冲突、权限不足等。需仔细检查服务器项目的配置,确保没有任何错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值