10、文件上传和下载
10.1文件下载
ResponseEntity用于控制器方法的返回值的类型,该控制器方法的返回值就是响应到浏览器响应报文使用ResponseEntity实现下载文件的功能
10.2文件上传
* 文件上传的要求:
* 1、form表单的请求方式必须为post
* 2、form表单必须设置属性enctype="multipart/form-data"
11、拦截器
SpringMVC的拦截器有三个抽象方法
preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示拦截或放行,返回true为放行,即可以调用控制方法;返回false表示拦截,即不可以调用控制器方法。
postHandle:控制器方法执行之后执行postHandle()
afterCompletion:处理万视图和模型数据,渲染视图完毕之后执行
11.1多个拦截器的执行顺序
⑴如果每个拦截器的preHandle()都返回true
此时多个拦截器的执行顺序和拦截器在SpringMVC配置文件中的配置顺序有关:
preHandle()会按照配置的顺序执行,而其它两个postHandle和afterCompletion会按照配置的逆序执行
⑵如果某个拦截器的preHandle()返回了false
preHandle()返回false和它之前的拦截器的preHanlde()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterCompletion会执行
12异常处理器
12.1基于配置的异常处理
HandlerExceptionResolver接口
接口实现类:
DefaultHandlerExceptionResolver和 SimpleMappingExceptionResolver
SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver
12.2基于注解的异常处理
13、注解配置springmvc
使用配置类和注解代替web.xml和SpringMVC配置文件的功能
13.1、创建初始化的类,代替web.xml
在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为
SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完成。Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了
AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,容器会自动发现它,并用它来配置Servlet上下文。