Spring MVC的高级技术

SpringMVC配置的方式

1.使用Java类继承AbstractAnnotationConfigDispatcherServletInitialier配置
2.使用web.xml配置
3.设置web.xml使用基于Java的配置

SpringMVC处理文件上传

1.处理multipart形式的数据
一般表单提交所形成的请求结果是很简单的,就是以&符风格的多个name-value对,但是对于传送二进制数据,如上传图片,就显得力不从心。
multipart格式的数据会将一个表单拆分为多个部分part,每个部分对应一个输出域,在一般的表单输出域中,它对应的部分中会放置文本型数据,但是如果上传文件,对应的部分可以是二进制。

2.配置multipart解析器
a.CommonsMultipartResolver
b.StandardServletMultipartResolver
必须在Selvlet初始化类或者web.xml中,将multipart的具体细节作为DispatcherServlet配置的一部分
Selvlet初始化类可通过重载customizeRegistration()方法类来配置multipart的具体细节
web.xml可以使用<servlet>中的<multipart-config>元素配置

3.处理multipart请求
a.@RequestPart:控制器的方法参数上添加@RequestPart详解,以byte数组作为参数接收二进制数据
b.MultipartFile接口:为处理multipart数据提供了内容更为丰富的对象
c.javax.servlet.http.Part作为方法控制器参数

4.保存文件
a.ltipartFile的transferTo()方法,将上传文件写入文件系统
b.将文件保存到AmazonS3

处理异常
不管是好的坏的,Servlet请求的输出都是一个Servlet响应,如果在请求处理的时候出现了异常,那么它的输出依然会是Servlet响应,异常必须以某种方式转换为响应。

Spring提供了多种方式将异常转换为响应:
1.特定的Spring异常将会自动映射为指定的HTTP状态码
异常一般由Spring自身抛出,作为DispatcherSelvert处理过程中或执行校验时出现问题的结果。如DispatcherServlet无法找到适合处理请求的控制器方法,那么会抛出NoSuchRequestHandlingMethodException异常,最终结果就是产生404状态码的响应

2.异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码
尽管这些内置的映射是很有用的,但是对于应用所抛出的异常(Runtime
Exception默认产生500状态码)他们就无能为力,Spring提供了一种机制,能通过@ResponseStatus注解将异常映射为HTTP状态码

3.在方法上添加@ExceptionHandler注解,使其用来处理异常
对于@ExceptionHandler注解标注的方法,它能处理同一个控制器中所有的处理器方法抛出的异常

4.控制器通知@ControllerAdvice
@ControllerAdvice最为实用的一个场景是将所有@ExceptionHandler方法收集到一个类中,这样所有的控制器异常就能在一个地方进行一致的处理

WillLiaowh
71 声望8 粉丝

世界上最伟大的力量是坚持。