热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springmvc返回文件流数据_SpringMVC框架详解02

1.请求转发与重定向请求转发:请求转发时地址栏信息不会发生改变,请求转发不适合大量数据的传输,使用请求转发一次最多只能传输512字节的数据

1.请求转发与重定向

请求转发:请求转发时地址栏信息不会发生改变,请求转发不适合大量数据的传输,使用请求转发一次最多只能传输512字节的数据,请求转发的作用域在一次请求内,在springmvc中默认使用请求转发

return "/list.jsp";

ee110310a806a3263df6105da61c1874.png

重定向:每次都会创建出一个新的请求,在springmvc使用redirect进行重定向(注意:进行重定向时在springmvc.xml文件中配置的视图解析器中的前缀和后缀无效)

return "redirect:/error.jsp";

31e71b2632056e898e6d43c5a466ac2a.png

2.文件的上传与下载

单个文件的上传(注意:文件上传时需在form表单中指定enctype="multipart/form-data")

jsp

909bb47906a77a2a457faca7ba6cf9dd.png

配置:

controller

@RequestMapping("/upload")public String test(MultipartFile img) throws IllegalStateException,IOException{//getOriginalFilename()获取源文件名File file = new ile("d:/",img.getOriginalFilename());img.transferTo(file);return "welcome";}

多个文件的上传

jsp

afca1afeec25f835652350305f4446b2.png

controller

@RequestMapping("/upload")
public String tests(@RequestParam MultipartFile[] imgs, HttpSession session)throws IllegalStateException, IOException {for (MultipartFile img : imgs) {//session.getServletContext().getRealPath("/")获取服务器根目录//getOriginalFilename()获取源文件名File file = new File(session.getServletContext().getRealPath("/"), img.getOriginalFilename());img.transferTo(file);}

文件下载

@RequestMapping("download")
public ResponseEntity download() throws IOException {// 指定下载文件File file = new File("d:/test.jpg");// 获取文件的输入流InputStream fileInputStream = new FileInputStream(file);// 创建字符数组,并设置数组的大小为预估的字节数byte[] body = new byte[fileInputStream.available()];// 将输入流存储在缓存数组中fileInputStream.read(body);// 获取下载显示的文件名,并解决中文乱码String name = file.getName();String downLoadFileName = new String(name.getBytes("utf-8"), "ISO-8859-1");// 设置Http响应头信息,并且通知浏览器以附件的形式进行下载HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.add("Content-Disposition", "attachment;fileName=" + downLoadFileName); // 设置Http响应状态信息HttpStatus status = HttpStatus.OK;return new ResponseEntity(body, httpHeaders, status);}

3.自定义拦截器

1.自定义拦截器

配置

自定义拦截器类(注意需实现HandlerInterceptor接口)

public class HandelInterceptor implements HandlerInterceptor {//处理方法执行之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {System.out.println("处理方法执行之前");//true进行放行 false进行拦截return false;}//处理方法执行之后@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {}//所有工作处理 完成后执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {}}

2.多个自定义拦截器执行顺序(注意与在springmvc中的配置顺序有关)

e85041c292a8eef15c385c98dd1416b5.png

4.Spring和SpringMVC是父子容器关系解释

Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中
注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。

7e256fea7ad04bf8334d575a5515f118.png



推荐阅读
  • 一、Tomcat安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat8.0\webapps二、Tomcat8.0配置多个端口,其实也就是给T ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
LC--Vincent
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有