关于spring mvc MaxUploadSizeExceededException 死循环解决方案

当看到这文章的时候相信你现在应该遇到这样的问题了,我也是自己遇到了后来找到解决方案了记录下来,如果下次遇到就可以直接解决了。

至于为什么会出现这样的情况,可以看这篇文章:https://bz.apache.org/bugzilla/show_bug.cgi?id=57438

这些一个tomcat bug,但不知道什么版本解决了这个问题。所以下面用了另外一个方法搞定它。

<!-- 多部分文件上传 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 最大上传大小,不能超过40M  @see #FileUploadInterceptor -->
        <property name="maxUploadSize" value="41943040"/>
        <property name="maxInMemorySize" value="4096"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

首先,把maxUploadSize 设置大一点,让它不会抛异常出来。

然后创建一个拦截器控制上传大小,然后抛出同样的异常出来,或者也可以直接在拦截器中处理异常

public class FileUploadInterceptor implements HandlerInterceptor {
    private long maxSize;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(request!=null && ServletFileUpload.isMultipartContent(request)) {
            ServletRequestContext ctx = new ServletRequestContext(request);
            long requestSize = ctx.contentLength();
            if (requestSize > maxSize) {
                throw new MaxUploadSizeExceededException(maxSize);
            }
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }

    public void setMaxSize(long maxSize) {
        this.maxSize = maxSize;
    }
}

然后在xml中配置

<mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.lvrounet.peiniang.interceptor.FileUploadInterceptor">
                <property name="maxSize" value="4194304"/>
            </bean>
        </mvc:interceptor>

拦截器中可以根据需求配置上传的大小了。

时间: 2024-10-16 07:50:10

关于spring mvc MaxUploadSizeExceededException 死循环解决方案的相关文章

Spring MVC遭遇checkbox的问题解决方案

Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变量为null,不能动态绑定到spring的controller方法的入参上,并抛出异常. 解决方案: 1.javascript方式提交,提交前拼提交参数串,拼完后通过ajax方式提交.可以使用controller请求参数绑定. 缺点:逐个提取表单参数,并对checkbox选项参数进行判断拼装(字符分割),最终提交到后台太麻烦. 2.添加checkbox的同名隐藏域,从而使提交过去数据永不为n

Spring MVC 结合Velocity视图出现中文乱码的解决方案

编码问题一直是个很令人头疼的事,这几天搭了一个Spring MVC+VTL的web框架,发现中文乱码了,这里记录一种解决乱码的方案. 开发环境为eclipse,首先,检查Window->preferences->workplace->Text File Encoding,设置为GBK .vm文件中加入编码约束,举例如下 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ

Spring MVC 404 Not Found 无错误日志解决方案

场景描述,使用Spring MVC 框架,进行数据保存,用firefox的firebug跟踪发现404 Not Found. 分析:后台没有打印任何错误日志,无法分析问题所在. 解决方案(由我朋友提供) 在spring-mvc.xml 配置文件中 加上一下红色部分的配置文件. 在controller 下面添加 ControllerAdviceTest.java 文件(注意:必须是controller下面,因为在spring-mvc.xml 中配置了 component-scan) 再次运行 后台

Spring MVC使用@ResponseBody返回JSON数据406问题解决方案

其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案. 说起来,我以前接触到的一个项目,根本没有配置spring的文件,就直接用@ResponseBody可以返回JSON数据,不知道其中的秘诀在什么地方,搞不懂了. 今天主要提供另一个解决@ResponseBody返回JSON数据,页面抛出406错误的解决方案. 第一步,引入包: <dependency> <groupId>c

Spring MVC关于IE对application/json的content-type不支持解决方案---duang 解决了

在现代的web开发中,我们为了用户的体验广泛的使用异步开发,用户看不见后台的实际执行情况,只关心结果,所以良好的提示消息决定了系统对用户的态度,所以要开发一套标准的提示消息,我选择了JSON,但是在实际开发过程中,会发现IE不支持application/json类型,所以我也在网上查找了好多同样的问题,但是大部分说法都是注册注册表,但是我门发布系统又不能让每个用户都注册一下注册表,这显然很不合理,所以我发现,只要修改返回的内容的类型(ContentType)即可解决问题. 1,默认情况下,我们会

Spring MVC无法获取到页面表单put过来的参数的解决方案

问题: 在使用Spring MVC开发resetful风格的Web应用时,发现Sping接收不到页面Form表单传到后台的值. 解决: 1.把Spring及Spring MVC的版本升级到3.1.1 <org.springframework.version>3.1.1.RELEASE</org.springframework.version> 2.增加HttpPutFormContentFilter过滤器 <filter> <filter-name>Http

Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题

    在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现.在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案. 一.文件上传大小限制 这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可

Spring MVC 多文件上传大小限制及异常处理

Spring MVC  多文件上传大小限制及异常处理 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在 spring mvc 的默认配置文件 WEB-INF/xxx-servlet.xml 中

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>