以下是获取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,实现文件下载功能相关推荐

  1. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系

    spring中获取servletcontext 代码如下,关键是要知道 contextLoader的强大!其它很简单 WebApplicationContext webApplicationConte ...

  2. Spring MVC 文件上传 文件下载

    索引: 目录索引 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadController.java Files_Ut ...

  3. spring项目获取ServletContext

    (1)生命周期 ServletContext中的属性的生命周期从创建开始,到服务器关闭而 (2).获取ServletContext 1.request获取servletContext ServletC ...

  4. Spring MVC获取参数的几种常见方式

    Controller 接收请求参数的方式有很多种,有的适合 get 请求方式,有的适合 post 请求方式,有的两者都适合.下面分别介绍这些方式,读者可以根据实际情况选择合适的接收方式. 通过实体 B ...

  5. Spring 2.5 基于注解驱动的 Spring MVC

    基于注解的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,为 Spring MVC 提供了完全基于注解的配置.本文将介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如 ...

  6. Spring MVC漏洞学习总结

    Spring MVC命令执行漏洞 http://book.51cto.com/art/201204/330094.htm <白帽子讲Web安全>第12章Web框架安全,本章讲述了一些Web ...

  7. Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] Request和Response-学习笔记01[Request_原理和继承体系.Request_获取请求数据][day01] Request和Resp ...

  8. 利用Spring MVC 上传图片文件

    本文转自:http://amcucn.iteye.com/blog/264457.感谢作者 近日在工作当中,需要用到上传图片的功能,然而自己平时学习的时候只会使用struts的上传功能,但因为项目并没 ...

  9. Spring MVC的国际化

    Spring MVC 的国际化是建立在 Java 国际化的基础之上的,Spring MVC 框架的底层国际化与 Java 国际化是一致的,作为一个良好的 MVC 框架,Spring MVC 将 Jav ...

最新文章

  1. 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
  2. RHEL修改最大文件打开数,关于epoll socket Too many open files问题的解决
  3. 烽火2640路由器命令行手册-12-IBM网络配置命令
  4. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  5. 质量故事(2)---降落伞的真实故事
  6. 《深度学习》李宏毅 -- task6卷积神经网络
  7. c++中new和delete
  8. Centos7下ping通ip但是ping不通域名+firefox无法打开网页
  9. Android Studio开发
  10. 3d max插件的基本知识和安装方法
  11. 条件关系和因果关系,原因和理由的区别
  12. 手把手教你在 Vue 中使用 JSX,不怕学不会!【建议收藏】
  13. LBS计算两坐标的距离
  14. java爬虫(爬取豆瓣电影排行榜)
  15. word如何一键全选_word文档怎么全选所有内容
  16. mysql自定义自增序列
  17. mysql5.0.7中文乱码_PHP+MySQL5.0中文乱码解决方法
  18. C#中窗体绑定键盘按钮
  19. TUSB3410驱动
  20. 过去和未来:CISO成功的5个阶段

热门文章

  1. 亿级数据量系统数据库性能优化方案
  2. 对于世界人口走向,人工智能是那头最大的灰犀牛
  3. 离散数学 习题篇 —— 图的基本概念——连通分支数
  4. 教程篇(5.4) 18. 单点登录 ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4
  5. 无菌包装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. Chrome谷歌浏览器如何截取整个网页长图?
  7. pycharm如何全局搜索
  8. Redis Key 统一管理技巧
  9. 数据链路层:封装成帧、透明传输、差错检测
  10. 这个开源组件太强了,仅需三步完成 SpringBoot 日志脱敏