spring MVC 获取servletContext,实现文件下载功能
以下是获取servletContext:
import javax.servlet.ServletContext;import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;/*** ServletContext辅助类。提供springmvc获取servletContext对象及项目真实路径的静态方法* @author Administrator**/
public class ServletContextUtils {private ServletContextUtils() {}/*** 获取ServletContext对象* @return ServletContext对象*/public static ServletContext getServletContext() {WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();ServletContext context = webApplicationContext.getServletContext();return context;}/*** 根据folder获取文件的真实路径* @param folder 要获取文件夹的真实路径* @return folder的真实路径*/public static String getRealPath(String folder) {ServletContext context = getServletContext();String path = context.getRealPath(folder);return path;}
}
以下是文件下载代码:
@RequestMapping("/{filename}")public ResponseEntity<byte[]> download(@PathVariable String filename) throws IOException {ResponseEntity<byte[]> entity = null;try {HttpHeaders headers = new HttpHeaders();String pathname = getFilepath(filename);File file = new File(pathname);headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);entity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);return entity;} catch (IOException e) {logger.error(e.getMessage());throw e;}}private String getFilepath(String filename) {String pathname = ServletContextUtils.getRealPath("/file") + "\\" + filename + ".txt";return pathname;}
springmvc4 以上版本已经实现与servlet的低耦合,不知道为什么很多人写代码用的也是springMVC4或者5,仍然在使用httprequest。
转载于:https://blog.51cto.com/14220961/2365599
spring MVC 获取servletContext,实现文件下载功能相关推荐
- Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
spring中获取servletcontext 代码如下,关键是要知道 contextLoader的强大!其它很简单 WebApplicationContext webApplicationConte ...
- Spring MVC 文件上传 文件下载
索引: 目录索引 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadController.java Files_Ut ...
- spring项目获取ServletContext
(1)生命周期 ServletContext中的属性的生命周期从创建开始,到服务器关闭而 (2).获取ServletContext 1.request获取servletContext ServletC ...
- Spring MVC获取参数的几种常见方式
Controller 接收请求参数的方式有很多种,有的适合 get 请求方式,有的适合 post 请求方式,有的两者都适合.下面分别介绍这些方式,读者可以根据实际情况选择合适的接收方式. 通过实体 B ...
- Spring 2.5 基于注解驱动的 Spring MVC
基于注解的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,为 Spring MVC 提供了完全基于注解的配置.本文将介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如 ...
- Spring MVC漏洞学习总结
Spring MVC命令执行漏洞 http://book.51cto.com/art/201204/330094.htm <白帽子讲Web安全>第12章Web框架安全,本章讲述了一些Web ...
- Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】
Java后端 学习路线 笔记汇总表[黑马程序员] Request和Response-学习笔记01[Request_原理和继承体系.Request_获取请求数据][day01] Request和Resp ...
- 利用Spring MVC 上传图片文件
本文转自:http://amcucn.iteye.com/blog/264457.感谢作者 近日在工作当中,需要用到上传图片的功能,然而自己平时学习的时候只会使用struts的上传功能,但因为项目并没 ...
- Spring MVC的国际化
Spring MVC 的国际化是建立在 Java 国际化的基础之上的,Spring MVC 框架的底层国际化与 Java 国际化是一致的,作为一个良好的 MVC 框架,Spring MVC 将 Jav ...
最新文章
- 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
- RHEL修改最大文件打开数,关于epoll socket Too many open files问题的解决
- 烽火2640路由器命令行手册-12-IBM网络配置命令
- 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
- 质量故事(2)---降落伞的真实故事
- 《深度学习》李宏毅 -- task6卷积神经网络
- c++中new和delete
- Centos7下ping通ip但是ping不通域名+firefox无法打开网页
- Android Studio开发
- 3d max插件的基本知识和安装方法
- 条件关系和因果关系,原因和理由的区别
- 手把手教你在 Vue 中使用 JSX,不怕学不会!【建议收藏】
- LBS计算两坐标的距离
- java爬虫(爬取豆瓣电影排行榜)
- word如何一键全选_word文档怎么全选所有内容
- mysql自定义自增序列
- mysql5.0.7中文乱码_PHP+MySQL5.0中文乱码解决方法
- C#中窗体绑定键盘按钮
- TUSB3410驱动
- 过去和未来:CISO成功的5个阶段
热门文章
- 亿级数据量系统数据库性能优化方案
- 对于世界人口走向,人工智能是那头最大的灰犀牛
- 离散数学 习题篇 —— 图的基本概念——连通分支数
- 教程篇(5.4) 18. 单点登录 ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4
- 无菌包装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Chrome谷歌浏览器如何截取整个网页长图?
- pycharm如何全局搜索
- Redis Key 统一管理技巧
- 数据链路层:封装成帧、透明传输、差错检测
- 这个开源组件太强了,仅需三步完成 SpringBoot 日志脱敏