spring MVC 文件上传的MaxUploadSizeExceededException异常处理
来源:互联网 发布:mac os x卸载软件 编辑:程序博客网 时间:2024/05/17 08:31
spring MVC上传文件使用了common.fileupload组件,该组件上传文件的时候有个文件大小的限制,在超出这个限制之后.会抛出MaxUploadSizeExceededException异常.
该异常是spring检查上传文件的信息的时候抛出的,此时还没进入Controller内解析文件的方法中.
网上查到的方法是:
1 使用org.springframework.web.servlet.handler.SimpleMappingExceptionResolver,如:
- <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
- <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error/maxUploadExceeded</prop>
- </props>
- </property>
2 自己实现.HandlerExceptionResolver类,如
- public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
- private Log log = LogFactory.getLog(getClass());
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object handler, Exception ex) {
- log.warn("Handle exception: " + ex.getClass().getName());
- Map model = new HashMap();
- model.put("ex", ex.getClass().getSimpleName());
- model.put("error", ex.getMessage());
- return new ModelAndView("error", model);
- }
另定义<bean class="MyHandlerExceptionResolver "/>
这两种方法的侵入性真的太大了,查看源代码org.springframework.web.multipart.commons.CommonsMultipartResolver 127行
- if (this.resolveLazily) {
- return new DefaultMultipartHttpServletRequest(request) {
- @Override
- protected void initializeMultipart() {
- MultipartParsingResult parsingResult = parseRequest(request);
- setMultipartFiles(parsingResult.getMultipartFiles());
- setMultipartParameters(parsingResult.getMultipartParameters());
- }
- };
- }
有个resolveLazily属性,一个类似懒加载的属性.可以定义该属性.让解析文件的时候再抛异常,然后Controller中定义异常处理的方法
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
- p:defaultEncoding="utf-8" >
- <property name="resolveLazily" value="true"/>
- <property name="maxUploadSize" value="1024" />
- </bean>
- @ExceptionHandler(Exception.class)
- public String handleException(Exception ex,HttpServletRequest request) {
- if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
- request.setAttribute("error", "文件超过长度");
- }
- return "要转向的页面,可以自由定义或者是原页面.";
- }
- spring MVC 文件上传的MaxUploadSizeExceededException异常处理
- Spring MVC 文件上传的MaxUploadSizeExceededException异常处理
- spring处理MaxUploadSizeExceededException异常
- spring MVC 文件上传的异常处理
- Spring MVC 多文件上传大小限制及异常处理
- Spring MVC—拦截器,文件上传,中文乱码处理,Rest风格,异常处理机制
- spring mvc 的异常处理
- spring mvc的异常处理
- spring mvc的异常处理
- Spring MVC 的 异常处理
- Spring MVC的异常处理
- spring mvc上传文件超过设定大小异常处理客户端无响应:请求的连接被重置
- Spring MVC 的文件上传
- Spring mvc的文件上传
- Spring MVC文件的上传
- Spring MVC的文件上传
- Spring MVC的文件上传
- spring-mvc的文件上传
- linux at
- 排队
- Ajax方法总结
- 腾讯人心中的产品运营
- 什么是域名解析的SRV记录
- spring MVC 文件上传的MaxUploadSizeExceededException异常处理
- Asp.net中jquery的ajax请求页面获取参数的注意点
- RMQ代码
- Sencha Touch 2.0官方指南:使用data包
- 编写一个控制台程序,能够处理以下命令,利用args
- 做产品不能想当然
- 产品运营专员
- App Store Review Guidelines
- html5 使用canvas画线