文件上传于异常处理等内容分解
树图思维导图提供 Spring-MVC思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Spring-MVC思维脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:93841d503308ea094fd3c39dbb03694a
Spring-MVC-03思维导图模板大纲
在Java中,主流文件上传方式有两种,分别是通用文件上传(commons-fileupload) 和Servlet3.0方式的文件上传, 前者更为广泛使用,springmvc分别对两种方式都做了支持
SpringMVC对文件上传的接口做了统一的封装,两种方式都是使用MultipartFile接口, 使得开发人员可以在业务代码中使用统一的接口
commons-fileupload方式文件上传
准备工作
创建FileUpload.jsp
文件上传客户但必须要满足以下条件: 1)表单项type="file" 2)表单的提交方式是post 3)表单的enctype属性是多部份表单格式,及enctype="multipart/form-data"
添加依赖
在SpringMVC.xml配置文件中添加MultipartResolver文件上传解析器
在Controller中编写文件上传逻辑代码
Servlet3.0标准API文件上传
引入servlet3.0依赖
web.xml中配置
在SpringMVC.xml中配置multipartResolver
之前异常处理和现在异常处理的对比
在SSM框架使用时,异常一般是由Dao抛给Service,Service抛给Controller,由Controller处理或者抛给全局异常处理, Service中禁止使用try{}catch{}处理异常,因为有可能会引起Spring声明式事务失效。
单Controller范围异常处理
注释掉Interceptor操作
service
Controller
处理所有异常类型
在需要异常处理的Controller类中添加如下方法,给方法添加 @ExceptionHandler 注解
处理特定异常类型
多Controller异常处理
子主题 2
新建一个专门用于异常处理的类作为全局异常处理,给该类添加 @ControllerAdvice 注解
@ControllerAdvice 注解默认会作为全局的异常处理,所有的Controller中出现异常都会自动调 用这里的方法去处理异常。 我们也可以通过该注解中的一些属性进一步细化异常处理的作用范围
annotations属性
basePackages属性
assignableTypes属性
使用通用上传方式的解决方法 在配置的CommonsMultipartResolver bean中注入属性
使用Servlet3.0标准上传方式的解决方法 通过配置SpringMVC提供的POST编码过滤器解决
本质上还是设置请求的编码 request.setCharacterEncoding("UTF-8");
拦截器VS过滤器
pringMVC的拦截器和Servlet中的过滤器(Filter)功能类似。
Fliter
过滤器Filter是Servlet规范中提供的一项技术,他不依赖与任何第三方框架,他的主要租用来做两件事:
加工请求
过滤请求
校验响应结果
拦截器
拦截器是SpringMVC自己自己封装的一项基于Handler拦截的技术。也就是说只有在SpringMVC框架 里面才有拦截器的概念。拦截器拦截的对象是Handler接口。它的全称是 HandlerInterceptor。
如何使用拦截器
需求:创建LoginController实现用户登录,如果用户名和密码为null则不能跳转到success.jsp, 如果不为null,则跳转到success.jsp。
springmvc.xml
LoginController.java
定义拦截器类
配置拦截器
全局拦截器
拦截指定请求的拦截器
如果interceptor配置成拦截/**,会将放行的静态资源请求也一并拦截,需要通过 exclude-mapping放开。
树图思维导图提供 1107文家市玉萍思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 1107文家市玉萍思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ed943ef641f6dc874860eb6095857ed6
树图思维导图提供 种子思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 种子思维脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:86f8307a40ea24607c6c79354e09377f