在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现。在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案。
一、文件上传大小限制
这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可配置,示例如下:
"multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> "maxUploadSize" value="5242880" />
关于Spring MVC中文件上传大小的限制就这么简单,问题是Spring MVC并没有像Struts2那样的配置,如果单纯配置一个限制文件上传大小的配置,当超过上传限制后就会出现异常:
所以当在文件解析器中配置了文件大小的限制后,必须将抛出的MaxUploadSizeExceededException(上传文件过大异常)进行接收并跳转。关于异常接收,在Spring MVC官方文档中介绍了有3种方法,这里主要介绍其中2种:
(1)直接在配置文件spring-config.xml中使用Spring MVC提供的SimpleMappingExceptionResolver(异常解析映射器)来接收异常信息:
"exceptionResolver" class= "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">"exceptionMappings"> "org.springframework.web.multipart.MaxUploadSizeExceededException">/error
这样当再出现文件上传大小的异常时,配置文件会自动捕获异常并进行匹配,匹配到对应的MaxUploadSizeExceededException异常,就跳转到指定的error.jsp错误页面。
(2)另一种就是自定义一个异常处理器类,可以匹配接收各种异常,同时可以指定跳转页面以及错误提示信息:
/** * 自定义异常处理器类 */ public class ExceptionHandler implements HandlerExceptionResolver{ /** * 处理上传文件大小超过限制抛出的异常 */ @Override public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object ob,Exception ex) { ModelAndView mv=new ModelAndView(); //判断异常类型,来跳转不同页面 if (ex instanceof MaxUploadSizeExceededException){ //指定错误信息 mv.addObject("errormessage", "上传文件过大"); //设置跳转视图 mv.setViewName("userEdit"); return mv; } //其他异常 return null; } }
上面自定的异常处理器类,模拟接收了抛出的MaxUploadSizeExceededException异常,完成自定义异常处理器类后,还必须进行在spring-config.xml配置文件中配置:
"关注打赏


微信扫码登录