IDEA图片上传问题

1、分析原因

这个问题是这样的,我使用的SSM框架,在上传图片时发现找不到路径。这里项目曾经在eclipse上写的,在迁移到IDEA上时,发现无法找到原来的路径。这个问题我想了一下,应该是eclipse使用tomcat启动web项目时部署的路径与IDEA启动时不同。于是我就查理一下tomcat部署方法。这里我了解到有三种部署方法。

1、war文件直接扔进webapp里面。这个方法是比较常见的了,就不多述了。server.xml中Host标签是有关于webapp的配置。

2、server.xml中配置context标签,通过context的配置,可以指定某一个web应用。

通过如下标签控制


这里代表的是虚拟路径为A,就是映射到ip:port/A, 项目的路径是B。
配置参数:

  • path:虚拟路径。
  • docBase:应用程序的物理路径。
  • workDir:这个应用的工作目录,存放运行时生成的与这个应用相关的文件。
  • debug:设定debug level, 0表示提供最少的信息,9表示提供最多的信息。
  • privileged:设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet。
  • reloadable:如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署。
  • ntiResourceLocking 和antiJARLocking:热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
    这里参考了这个
    原文:https://blog.csdn.net/qq_41376740/article/details/82191115

3、进入tomcat目录里面的conf/Catalina/localhost,新建一个xml文件,记住名字和path后面的要一致,是根据这个来确定项目名称的,Context标签的配置一样。

zhii’eIDEA图片上传问题_第1张图片
直接引用了原帖子的图片。这里可以清晰的看到tomcat具体把配置文件写在了哪里。
eclipse是用的在webapps下新建一个文件的方法,而idea全都新建到了target文件中配置到tomcat里。原来上传图片的路径是webapps下的相应位置,现在只要改到target中就可以了。

2 问题解决

IDEA中配置虚拟路径。
第一步,
IDEA图片上传问题_第2张图片
第二步,
IDEA图片上传问题_第3张图片
第三步,

String filePath = request.getSession().getServletContext().getRealPath("/static/upload/article");

获取上传路径。

小结

这个问题就这样解决了。当然还有很多细节的原理问题没有说清楚,参考了别人的文章,以后也要遇到问题多分析,多思考。问题总会被解决,再苦再累也要不断进步。

你可能感兴趣的:(SSM框架)