JavaEE获取资源(通过路径/通过域名)
2016-08-28 09:51
148 查看
一、通过路径
1、使用ServletContext
/* * 这里将获取的path是web项目的全路径 * 例如:E:/workspace/webapp/ * webapp是我web项目的根目录 */ String path = servletContext.getRealPath("/");
2、使用ClassLoader
// 获取Class对象 String clazz = getClass(); // 获取ClassLoader 对象 ClassLoader classLoader = clazz.getClassLoader(); /* * 通过Class获取资源路径(相对路径当前Class目录) * 例如:%TOMCAT_HOME%/webapps/appName/WEB-INF/classes/com/accelerator/ * 当前Class的包就是com.accelerator */ URL url1 = clazz .getResource(""); /* * 通过ClassLoader获取资源路径(相对路径Class根目录) * 例如:%TOMCAT_HOME%/webapps/appName/WEB-INF/classes/ * 当前Class的classpath根目录 */ URL url2 = classLoader.getResource("");
此方法有个BUG(当文件路径有中文和空格时解析不正确)、提供以下解决方法:
使用
repaceAll("%20", " ")替换后、只能解决空格问题、但是路径中包含%和中文就不行了、
使用
URLDecoder.decode(String, "UTF-8")解码、但是只能解决一部分、若路径中含有+、也是不能解决的、原因是URL并不是完全用URLEncoder.encode(str,”UTF-8”)编码的、+号被解码后、却变成了空格
可以解决所有的问题、用
getResource.toURI().getPath()但是需要处理URISyntaxException异常、比较麻烦点、
这个方法也可以不在Server环境里确定路径、两种getResource的方式最终实现都是通过classLoader、
想深入了解的可以参考:classLoader.getResource(String)和class.getResource(String)的区别
二、通过域名
1、使用HttpServletRequest
String path = request.getContextPath(); /* * 这里获取的basePath为网站的根目录路径 * 例如:http://www.accelerator.com:8080/test * test是我的项目context、 * 此路径一般用来引用CSS、js、img等资源、 */ String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
4000
相关文章推荐
- 在java项目中通过相对路径获取资源的方式
- webpack通过url-loader获取资源文件路径
- 在java项目中通过相对路径获取资源的方式
- android通过拼写字符串获取资源文件
- 通过JS获取文件上传路径
- 坏事做尽--通过修改IL获取某资源文件
- 通过搜索注册表来获取应用程序路径
- C#通过文件路径获取文件名
- 使用相对路径来获取资源
- 通过域名获取IP地址
- C#通过文件路径获取文件名
- C# 通过窗口句柄获取程序运行路径 通过程序运行路径获取程序图标
- 实践:通过编程来获取资源的值
- linux通过域名获取主机信息
- 通过 URL类获取带密码验证资源文件的处理方法
- 6.获取资源路径
- 通过搜索注册表来获取应用程序路径
- 通过快捷方式获取文件路径
- Delphi~通过程序窗体句柄获取程序路径
- Java 获取资源路径的3种方法与区别