最近在做一个ssm小项目,项目中有上传功能,本来是一个激情平常的功能。但当我配置好上传文件的大小后,一测试发现问题了。即使我项目中捕获到了MaxUploadSizeExceededException这个异常,但是浏览器确无响应了。测试几次之后仍然是这种问题,于是网上查了各种资料。最终发现是Tomcat的问题,因为tomcat遇到这个异常后出现了死循环。到Apache官网发现了这个bug的介绍,截图如下:

不过这个问题对于tomcat-7.0.39好像没有影响。如果项目用的是这个版本,应该不会出现这种问题。

如果不想用下面方法,文章后面提供免费tomcat-7.0.39的链接供下载

现在我们来看看如何解决这个问题:

我的做法是:

第一步:先把配置文件中maxUploadSize的值调大些,使之不会抛出异常。

第二步:然后加入一个拦截器控制上传文件的大小,抛出相同的异常。

第三步:最后再在配置文件中配置拦截器上传文件的大小即可。

第一步代码片段:

<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  <!-- 上传文件大小上限,单位为字节 --><property name="maxUploadSize">  <value>104857600</value>  </property>  <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 --><property name="defaultEncoding"><value>UTF-8</value></property><!--resolveLazily属性启用是为了推迟文件解析,以便在UploadController 中捕获文件大小异常-->  <property name="resolveLazily" value="true"/> </bean>

第二步代码片段:

public class FileUploadInterceptor implements HandlerInterceptor {private long maxSize;@Overridepublic 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;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}public void setMaxSize(long maxSize) {this.maxSize = maxSize;}
}

第三步代码片段:

<!-- 上传文件大小拦截器 --><mvc:interceptor><mvc:mapping path="/**"/><bean class="cn.benett.SIMS.interceptor.FileUploadInterceptor"><property name="maxSize" value="4194304"/></bean></mvc:interceptor>

这样,你再去拦截异常时MaxUploadSizeExceededException,这个异常就可以任你处置了,不会再出现浏览器无响应的情况了。
附上一张抓住这个异常处理后的页面:

tomcat下载链接:点击打开链接 http://download.csdn.net/detail/sky_100/9798087

关于Spring MVC 文件大小超过限制后浏览器无响应解决方案相关推荐

  1. IE下载附件,文件大小超过10M后 无法下载

    IE下载附件,文件大小超过10M后 无法下载 以前遇到过一个C#项目下载文件大小10m后就提示下载失败,但上传却是正常. 如遇到这两种情况可以从以下两点分析: 1.下载文件时是否需解密,并且解密后的文 ...

  2. 修改文件后浏览器自动刷新解决方案

    为什么要找这样的一个方法? 工作场景中发现的需求,都要找办法去解决. 我们在双屏开发的时候,经常是在Mac屏幕上写代码,然后在扩展屏幕上放着浏览器. 一般写几行代码,就会去刷新一下浏览器,看看代码运行 ...

  3. 计算机无法访问iTunes,iPhone连接电脑后iTunes无响应怎么办【解决方法】

    iPhone连接电脑后iTunes无响应怎么办 ?有时候手机可能无法和电脑连接,这里分析了几种情况并为大家带来解决方法. 情况一: 连接前先确保您的数据线可以正常使用,并检查其与电脑.手机间的接口是否 ...

  4. Idea汉化安装后Settings无响应

    Idea汉化安装后Settings无响应 问题背景: 已安装idea2019版并且汉化,打开后settings没有响应 解决方法: 进入idea的安装目录,找到lib目录中的resources_cn. ...

  5. Win11的两个实用技巧系列之开机后桌面无响应怎么办?

    目录 win10开机后桌面无响应怎么办?win10开机后桌面无响应点什么都不行 win10开机后桌面无响应点什么都不行怎么办? Win10和Win11 22H2如何关闭文字热门搜索? Win11 22 ...

  6. IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0 实际解决方案

    IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法 IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Int ...

  7. oppo手机打电话拨号失败服务器无响应,手机华为浏览器无响应怎么办

    1. 华为手机软件无响应怎么办 1.进入华为的手机管家,进行一键优化,优化后点击清理加速,确保手机处于最佳状态,然后重新进入游戏尝试,若未解决请参考下一条 2.华为手机游戏时出现闪退黑屏或无响应:手机 ...

  8. Revit项目和族文件升级后出现无响应死机情况

    Revit项目和族文件升级到高版本打开后,出现以下各种无响应死机情况: 升级打开模型后,再按Esc键Revit会死机. 升级打开使用模型时,频繁出现没有响应,按任何键都没反应. 环境 Windows ...

  9. Spring MVC上传文件后重命名读取不显示,报错已解决(The origin server did not find a current representation for the targe)

    上传文件后,重命名保存在本地,再读取时报错:The origin server did not find a current representation for the target resourc ...

最新文章

  1. Bioinformatics| 生物医学网络中的图嵌入方法
  2. 如何手动的用jigloo设计器关联java界面文件 jigloo 设计器失去关联解决
  3. 多协议底层攻击工具Yesinia
  4. 一套完整的导视设计案例_经验分享 | 我的一套完整的硬件电路设计方案
  5. mysql max 命令大全_MySQL常用命令,34道练习题(持续更新中)。
  6. 浦发银行:开展互联网金融业务是与狼共舞,如何才能不失阵地?
  7. 站长工具:天和流量王绿色版 下载
  8. php公司共享 管理,php – 管理几个共享重叠函数和类的代码库
  9. spring boot 相关快捷内置类和配置
  10. 乐优商城遇到的坑(三)之Centos6.5下安装nginx出错
  11. win7右键计算机死机,Win7桌面点击右键死机的解决方法
  12. 中望cad自定义快捷键命令_[cad常用快捷键命令大全]中望cad常用快捷键及命令
  13. 华为网络设备-OSPF路由实验
  14. 项目实施过程中的风险控制
  15. Spark调优之推测执行
  16. YC创始合伙人Jessica Livingston七年经验总结:创业路上如何避开这八只拦路虎
  17. sws_kp操作(selenium webdriver+python)
  18. 简要描述如何安装配置apache的一个开源Hadoop
  19. ps导出的gif图片不能动,或是只能动一次的解决办法
  20. 一步一步实现中后台管理平台模板-08-登录页和用户信息保存

热门文章

  1. 【超级干货】Delphi轮播视频和图片程序(用于双屏显示程序)
  2. Invalid config, exiting abnormally
  3. 动态规划法(二)——弗洛伊德算法
  4. 海康威视主码流和子码流的区别
  5. picsart下载_PicsArt下载-PicsArt 安卓版v15.9.53-PC6安卓网
  6. 2048AI设计与实现
  7. 计算机junit测试类,复利计算器4.0之再遇JUnit
  8. 如何向oracle中导入数据,Oracle导入导出数据库的语法_Oracle_Oracle语法_Oracle数据库_课课家...
  9. Node 中的 Events
  10. STM32F103-TIM3 4路PWM波输出