idea用tomcat发布javaWeb项目中的存在的图片存储路径问题解决

tomcat 专栏收录该内容
1 篇文章 0 订阅

背景:

公司最近跟潮流,在技术一块进行了大刀阔斧的改革,换了编辑器(idea),换了框架(Spring+SpringMVC+Hibernate),更新了底层,优化了代码,除了原有的后台框架基础(ZK),和我们这些五大三粗的程序员和程序媛们,所有的都换了,这样的好处也就是让我们这些目光短浅的井底之蛙也见到了外面的世界,见到了外面新奇的技术,总的来说还是很有好处的。这也让我们提起了干劲,摸索着前进。
今天在做微信图片上传的时候碰到了一个坑爹的骂娘的bug,这问题在原来的myeclipse中不是问题,因为在myeclipse中,项目通过tomcat发布都是发布到webapp目录下的,而在上传图片这种静态资源的时候,考虑到图片不能随着项目发布而消失,所以我们以前的解决方法就是在tomcat的webapp目录下建一个与项目同级的files文件夹,用于存储图片,excel,word等静态文件。这样的话就可以有效的避免在项目发布的过程中静态资源消失的问题。但是换到idea中之后,由于在idea中,项目通过tomcat发布时,项目并不是存在tomcat里的,而是存在artifacts中的Output directory所对应的文件目录下。
这里写图片描述
所以用了绝对路径也找不到,用相对路径更加不对,花了很多时间。后来想到,既然路径可以自己定义那为什么不和以前一样放在tomcat的webapp下面呢,不仅熟悉,而且安全,可以控制权限,这里建议大家不要把项目代码或者静态资源放在服务器的C、D、E这种硬盘上,如果被黑客入侵那么资源就没了,tomcat的webapp目录可以设置访问修改权限所以比较安全。修改了项目发布的路径就简单了。

  1. 在项目的入口请求中,也就是用户整个系统的入口页面跳转请求中获取服务器的根目录,可以使用request.getSession().getServletContext().getRealPath("/");这个方法拿到localhost:8080/项目名 这种地址,接下来通过String 的indexOf()方法和subString()方法讲项目名替换掉加上 files/… 了。这样图片就放到了服务器的根目录下。
  2. 图片存好了就需要访问了。在js或者jsp中最好直接使用绝对路径,这样会少掉很多问题。idea中支持虚拟路径,专门用于访问静态资源,点开tomcat的配置
    这里写图片描述
    3.点击右侧的+号,选择External Source…选择你存图片的路径,然后在右边的Application context中输入访问你静态图片的路径,也就是img,点击ok,这样你在浏览器里直接可以通过localhost:8080/img/…访问你的图片了,在js或者jsp中也可以直接使用这个路径访问图片。但是localhost要换成域名,因为别人在别的地方访问你的网站需要域名地址。

总结:1、一般静态资源不会和项目放在一起,以防止项目重启图片也没了。 2、访问静态资源最好可以使用绝对路径,可以在idea中设置虚拟路径作为静态资源的访问路径。

  • 10
    点赞
  • 9
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值