Spring in action-Multipart学习&异常处理

在SpringMVC中一般非文件的表单提交,在request时会自动以‘&’符号来拼接参数。但是在multipat表单请求时会将参数分为不同的数据域来传递。multipart请求中会将type为file属性的域文件转行成二进制数据。

对于Multipart请求,springmvc会有一个multipart解析器来处理multipart请求。(控制器有种接受参数的方法,可以使multipart解析器不是配置的)。

SpringMVC提供了两种multipart解析器:

CommonMultipartResolver(servlet3.0版本以前的Servlet容器也可以用),不强制配置临时文件路径,默认的路径是Servlet的临时目录。

StandardServletMultipartResolver(必须是Servlet3.0以后的版本才能使用),必须配置临时文件路径。

这两个都可以设置文件的限制信息,如:文件大小

我们常用的接受文件参数的方式:使用MultipartFile接口类,文件参数会自动注入到MultipartFile中。


第二种:使用@RequstPart直接将二进制文本转换成字节数组。

第三种:使用@RequstPart直接将二进制文本转换成Part对象,很多方法和Multipart对象很相似。这个居然不需要Multipart解析器。

异常处理:

这里可以将异常映射成对应的请求状态(可以很好的伪装一下自己的异常,哈哈哈)。

@ResponseStatus可以处理指定的异常,将异常映射成指定的HTTP请求。

关于Spring中的异常,在控制器@Controller中使用@ExceptionHandler,可以拦截@ExceptionHandler指定的异常,使用@ExceptionHandler注解的方法处理。这里@ExceptionHandler是可以拦截所在控制器范围内的异常。

如果需要将@ExceptionHandler处理扩展到整个应用全局上,可以在@ControllerAdivce注解的类中。@ControllerAdvice,本身包含@Compnet注解,这个叫做控制器通知,作用于整个应用。场景:应用出现某种异常,不需要每个Controller都添加@ExceptionHandler,可以使用@ControllerAdvice+@ExceptionHandler,一劳永逸。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值