Spring MVC 文件上传的MaxUploadSizeExceededException异常处理
来源:互联网 发布:自动化编程自学 编辑:程序博客网 时间:2024/05/29 04:19
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>
/** * 异常处理 * @param ex * @param request * @Description: */ @ExceptionHandler(Exception.class) public void handleException(Exception ex,HttpServletRequest request,HttpServletResponse response){ StringBuffer sb = new StringBuffer(); sb.append("<script language='javascript'>history.go(-1);alert('"); if (ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){ sb.append("文件大小不应大于"+((MaxUploadSizeExceededException)ex).getMaxUploadSize()/1000+"kb"); } else{ sb.append("上传异常!"); } sb.append("!');</script>"); try { System.out.println(sb.toString()); response.setContentType("text/html; charset=utf-8"); response.getWriter().println(sb.toString()); response.getWriter().flush(); } catch (IOException e) { e.printStackTrace(); } return; }
- @ExceptionHandler(Exception.class)
- public String handleException(Exception ex,HttpServletRequest request) {
- if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
- request.setAttribute("error", "文件超过长度");
- }
- return "要转向的页面,可以自由定义或者是原页面.";
- }
0 0
- 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的文件上传
- 【BZOJ3651】网络通信【Link-Cut Tree】
- poj--2752 Seek the Name, Seek the Fame(KMP)
- 链表分割
- Bootstrap.js 重复加载导致dropdown-toggle出现问题
- codeblock 设置
- Spring MVC 文件上传的MaxUploadSizeExceededException异常处理
- ZOJ-3935-2016
- int、long、long long取值范围
- C++ string类的实现
- redis 数据类型详解 以及 redis适用场景场合
- 用 shell 抠取文本中指定内容
- 【补充】deferred.then()的理解
- C#实现优先队列 基于二叉堆 附使用案例
- 配置eclipse内存