我是靠谱客的博主 火星上招牌,最近开发中收集的这篇文章主要介绍springMVC获取WEB-INF路径下资源,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天我需要获取WEB-INF下的资源文件,本来设置好响应头和响应码后,报了空指针。原来是

InputStream  in=servletContext.getResourceAsStream("/files/abc.txt");

请求的路径出现了问题,使用了

String classesUrl = this.getClass().getResource("").getPath().replaceAll("%20", " ");
String filePath = classesUrl.substring(0, classesUrl.indexOf("WEB-INF")) + "WEB-INF/files/abc.txt";

来获取路径,而该路径的结果是

E:/setups/apache-tomcat-9.0.0.M8_start/apache-tomcat-9.0.0.M8/webapps/demo/WEB-INF/files/abc.txt

显然是不对的,因为我的工程应用没有部署的服务器的webapps目录下。最后正确的写法是

InputStream  in=servletContext.getResourceAsStream("/WEB-INF/files/abc.txt");

 

下面记录一下源代码:


@RequestMapping("/testResponseEntity")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
byte[] body=null;
ServletContext servletContext=session.getServletContext();
String classesUrl = this.getClass().getResource("").getPath().replaceAll("%20", " ");
String filePath = classesUrl.substring(0, classesUrl.indexOf("WEB-INF")) + "WEB-INF/files/abc.txt";
///E:/setups/apache-tomcat-9.0.0.M8_start/apache-tomcat-9.0.0.M8/webapps/demo/WEB-INF/files/abc.txt
//InputStream
in=servletContext.getResourceAsStream(filePath);
String path= servletContext.getContextPath();
InputStream
in=servletContext.getResourceAsStream("/WEB-INF/files/abc.txt");
body=new byte[in.available()];
in.read(body);
HttpHeaders httpHeaders=new HttpHeaders();
httpHeaders.add("Content-Disposition","attachment;filename=abc.txt");
HttpStatus statusCode=HttpStatus.OK;
ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body,httpHeaders,statusCode);
return response;
}

写得有点乱。早点休息吧。

最后

以上就是火星上招牌为你收集整理的springMVC获取WEB-INF路径下资源的全部内容,希望文章能够帮你解决springMVC获取WEB-INF路径下资源所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部