由web项目中上传图片所引出的路径问题
我在做javaweb项目的时候,有个项目中需要进行图片的上传,有次我重新部署项目后,发现之前上传的图片不见了,最后找出原因:图片上传在服务器目录上,而不是绝对路径,所以特别想弄清楚javaweb项目中有关路径的一些问题。
首先,在做项目的时候我们最好用相对路径,如果写成绝对路径,当项目发布到其他环境时,绝对路径就错了。
Java中传统方式取资源时,有很多的方法;
先来看一看Class.getResource(String path),
path 不以'/'开头时,默认是从此类所在的包下取资源;
path 以'/'开头时,则是从ClassPath根下获取,在这里就是相当于项目的bin目录(Eclipse环境下);
注意:Class.getResource和Class.getResourceAsStream(获取资源流)在使用时,路径选择上是一样的。
再来看ClassLoader,即Class.getClassLoader().getResource(String path),
path不能以’/'开头, path是从ClassPath根下获取,在这里就是相当于项目的bin目录(Eclipse环境下);
注意:Class.getClassLoader().getResource和Class.getClassLoader().getResourceAsStream在使用时,路径选择上也是一样的。
-----------------------------------------------------------------------------------------------------------------------------
手动分割线
-----------------------------------------------------------------------------------------------------------------------------
注意哦,上面说的是传统方式获取资源的方法,也就是在一般的java项目中,那么在web项目中呢?
在web工程中,一般来说,是不能采用传统方式读取资源的,因为相对的是tomcat的bin目录,这也就是为什么图片上传在服务器目录上。
首先我们要先了解web中通过servletContext对象读取资源文件,然后就好理解web工程中,不同位置的资源文件的读取方式;
(在一个web工程中,只要涉及到写地址,建议最好以/开头)
第一点:使用ServletContext的getRealPath(String path)方法,获得文件的完整绝对路径path,再使用字节流读取path下的文件;
第二点:使用ServletContext的getResourceAsStream(String path)方法:返回资源文件的读取字节流;
第三点:使用ServletContext的getResource(String path)方法,获得一个url对象,调用该类的openStream方法返回一个字节流,读取数据;
第四点:还可以使用ServletContext的getResourcePaths(String Path)获取指定目录下所有资源路径;
好了,了解了ServletContext,现在就能用它在web项目中进行不同位置的资源文件的读取了,用例子来说明:
项目目录:
tomcat中的此项目目录:
miniblog目录:
WEB-INF目录:
classes目录:
读取jdbc.properties(当资源文件在包下面时),
InputStream in =this.getServletContext().getResourceAsStream("/WEB-INF/classes/jdbc.properties");
读取web.xml(资源文件在WEB-INF下),
InputStream in =this.getServletContext().getResourceAsStream("/WEB-INF/web.xml");
读取adminuser.jsp(资源文件在web工程中),
InputStream in =this.getServletContext().getResourceAsStream("/adminjsps/adminuser.jsp");
好了,这些就是我了解到的了~
注意:普通java项目和javaweb项目所对应的基本路径是不一样的,普通java项目对应的是eclipse工作空间的某个项目的bin目录,而javaweb项目则是tomcat的某个项目的根
目录;所以,取路径,取资源的方式都有所区别。
转载于:https://www.cnblogs.com/Arry10/p/7731802.html
由web项目中上传图片所引出的路径问题相关推荐
- java web资源目录下_Java Web项目中的各种资源的路径写法
如图,在项目中要跳转到如下的路径中(在项目下的target.html): public class PathDemo extends HttpServlet { public void doGet(H ...
- 聊聊WEB项目中的图片
最近一直在鼓捣图片相关的代码,今天抽时间写篇总结.此文没有什么高深的知识点,不汲及第三方的OSS相关点,更不汲及分布式文件存储框架,算是一篇关于WEB项目中图片相关功能的扫盲文; 同时与大家分享码字时 ...
- JAVA Web项目中所出现错误及解决方式合集(不断更新中)
JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...
- maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...
标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...
- 在java web项目中编写自己的代码生成器
在java web项目中编写自己的代码生成器 转载于:https://www.cnblogs.com/punisher/p/5909943.html
- 在web项目中发布jaxws
概述 在web项目中发布基于jaxws的webservice. 参考文章:用JAX-WS在Tomcat中发布WebService 参考文章说,如果不是servlet3.0及以上,需要配置servlet ...
- Web项目中引进EasyUI的路径问题
场景 Web项目中引入EasyUI,新建test.html,页面中引入EasyUI相关资源文件. 运行后页面并没有改变,打开检查提示404找不到资源. 实现 项目路径为: 路径引用错误: test.h ...
- maven web项目中的web.xml的版本如何更改
maven web项目中的web.xml的版本如何更改 问题 因web.xml的版本太低不支持el表达式的问题(maven3.6版本通过底层的maven web插件生成的最终的web.xml文件版本只 ...
- 在java web项目中实现随项目启动的额外操作
前言 在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等.对于这种要求,目前个人 ...
最新文章
- IIS7.0 网站发布页面显示 500 - 内部服务器错误。您要查找的资源有问题,无法显示...
- 基础回顾(正则、循环、和、 int和Integer、String /StringBuffer、Array和ArrayList、值传递和引用传递、 Lamda、java8)
- 公式编辑公式总是偏上怎么办?
- SAP Cloud Platform上Destination属性为odata_gen的具体用途
- P4137-Rmq Problem/mex【莫队,分块】
- 7.0上的新KIE持久性API
- Windows 窗体重绘
- 局域网传文件_跨平台传输文件方案大汇总(中篇)——可能全网最全的传输方案了...
- 我是火枪,我想打dps
- IMO 双帐号同步API文档
- 洛谷 P3957 跳房子
- My SQL 排序和分组
- svg图片 填充颜色
- 测试pok_如何使用PokémonGO的新评估系统计算您的Pokémon的精确IV
- 在人一生的成长过程中,什么才是最重要的因素?
- “代码差的程序员,90%输在了方法上!”骨灰级开发:其实都是瞎努力
- 关于Redis数据过期策略
- 手游神武2最新服务器,神武2手游新服开启公告 安卓IOS新服开启
- Mac版Ps、AE、PR不能突然使用?Adobe全家桶关闭自动更新的方法
- L2-040 哲哲打游戏 (25 分)
热门文章
- 【⭐C++宝藏男孩⭐】C++ string字符串比较
- Mysql - Binlog
- Object的finalize方法
- STM32F4 HAL库开发 -- STM32F407引脚图
- 【译】Jumping into Solidity — The ERC721 Standard (Part 2)
- butterknife 源码分析
- Android代码入侵原理解析(一)
- Ubuntu 14 配置Android Studio的快捷启动方式
- Android APP终极瘦身指南
- android电视打印信息解析,液晶电视获取打印信息的方法与操作