SpringMVC的请求转发与重定向
区别:
- 请求转发又叫服务器内部跳转地址栏不发生改变,只有一次请求。
- 重定向是又叫服务器外部跳转,地址栏发送改变,是两次请求。
JavaEE中的请求转发和重定向:
- 请求转发
- req.getRequestDispatcher("路径").forward(req,resp);
- 重定向
- resp.sendRedirect("路径");
SpringMVC的请求转发与重定向:
请求转发:(默认方式)
重定向:(使用redirect关键字)
SpringMVC文件上传、下载
上传:
- 上传文件是需要在页面form表单中添加属性enctype="multipart/form-data"。
- springMVC进行文件上传时,接收文件的参数类型是MultipartFile。
接收处理单个文件上传:
接收处理多个文件上传:
文件下载:
后端控制器方法的返回值类型为ResponseEntity<byte[]>。
后端控制器中的操作步骤。
- 1. 指定下载文件
- 2. 创建字节数组,并且设置数组大小为预估的文件字节数
- 3. 将输入流中字符存储到缓存数组中
- 4. 获取下载显示的文件名,并解决中文乱码
- 5. 设置Http响应头信息,并通知浏览器以附件形式下载
- 6. 设置Http响应头信息
SpringMVC自定义拦截器
步骤:
创建一个类实现HandlerInterceptor接口
在Spring配置文件中注册拦截器<mvc:interceptors>
程序中有两个或多个拦截器,程序的执行流程
- 先执行第一个拦截器的preHandle()方法,
- 然后执行第二个拦截器的preHandle()方法,
- 然后执行处理方法,
- 接下来执行第二个拦截器的postHandle()方法,
- 再执行第一个拦截器的postHandle()方法,
- 然后执行第二个拦截器的afterCompletion(),
- 最后执行第一个拦截器的afterCompletion ()方法。
Spring与SpringMVC的关系
- 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期。而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系。目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。