最近在讲课的时候,遇到了关于上传文件过大的时候浏览器无法响应的问题,配置了捕获异常,有的学生浏览器好使,有的学生浏览器不好用!莫名其妙!

MaxUploadSizeExceededException进入了无限的死循环,╮(╯▽╰)╭ 悲催! 为什么呢?

配置上传信息

在springmvc的核心配置文件配置如下信息

  1. <!-- 5.配置上传 -->
  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  3. <property name="defaultEncoding" value="UTF-8"/>
  4. <!-- 可以使用计算的 value="#{20*1024*1024}"/> -->
  5. <property name="maxUploadSize" value="20971520"/>
  6. <property name="maxInMemorySize" value="2048"/>
  7. <property name="resolveLazily" value="true"/>
  8. <!-- 配置的是虚拟路径 -->
  9. <property name="uploadTempDir" value="/uploadFile/temp"/>
  10. </bean>
  • id="multipartResolver" 需要去修改其id的名称
  • resolveLazily 属性启用是为了推迟文件解析,以便在上传操作中捕获文件大小异常

第一种方式:Controller使用异常注解

  1. @ExceptionHandler(Exception.class)
  2. public String handleException(Exception ex,HttpServletRequest request) {
  3. if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
  4. request.setAttribute("error", "上传文件过大");
  5. }
  6. return "要转向的页面,可以自由定义或者是原页面.";
  7. }

第二种方式:统一异常处理方式

在SpringMVC的核心配置文件配置统一的异常信息处理

  1. <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  2. <property name="exceptionMappings">
  3. <props>
  4. <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">maxUploadExceeded</prop>
  5. </props>
  6. </property>

问题: 使用拦截器解决客户端无响应问题

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

这个问题困扰了我很久了,其实我之前有一种解决方案是在前端进行判断操作,哈哈,之后的笔记会给大家奉献上!

在springmvc的核心配置文件配置如下信息

  1. <!-- 5.配置上传 -->
  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  3. <property name="defaultEncoding" value="UTF-8"/>
  4. <!-- 可以使用计算的 value="#{20*1024*1024}"/> -->
  5. <property name="maxUploadSize" value="20971520"/>
  6. <property name="maxInMemorySize" value="2048"/>
  7. <!-- 配置的是虚拟路径 -->
  8. <property name="uploadTempDir" value="/uploadFile/temp"/>
  9. </bean>

没有定义延时解析

定义拦截器

  1. public class FileUploadInterceptor extends HandlerInterceptorAdapter {
  2. @Override
  3. public boolean preHandle(HttpServletRequest request , HttpServletResponse response , Object handler )
  4. throws Exception {
  5. if(request!=null && ServletFileUpload.isMultipartContent(request)) {
  6. ServletRequestContext ctx = new ServletRequestContext(request);
  7. long requestSize = ctx.contentLength();
  8. if (requestSize > maxSize) {
  9. throw new MaxUploadSizeExceededException(maxSize);
  10. }
  11. }
  12. return true;
  13. }
  14. private long maxSize;
  15. public void setMaxSize(long maxSize) {
  16. this.maxSize = maxSize;
  17. }
  18. }

配置拦截器

  1. <mvc:interceptor>
  2. <mvc:mapping path="/**"/>
  3. <bean class="com.shxt.interceptor.FileUploadInterceptor">
  4. <property name="maxSize" value="4194304"/>
  5. </bean>
  6. </mvc:interceptor>

[六字真言]6.吽.SpringMVC中上传大小异常填坑的更多相关文章

  1. [六字真言]4.叭.SpringMVC异常痛苦

    "叭",除畜生道劳役之苦: 在学过的三阶段的时候,我们对SpringMVC的异常处理,一直可以算是简单中透着暴力,不要不重视异常!真的很重要,不要让它处在尴尬的位置! 在二阶段或者 ...

  2. [六字真言]2.嘛.异常定制和通用.md

    幻世当空 恩怨休怀 舍悟离迷 六尘不改 且怒且悲且狂哉! 最近一直在循环的一首歌! 丰富自己,比取悦他人更有力量.种下梧桐树,引得凤凰来.你若盛开,蝴蝶自来! 言归正传! 言归正传! 不要去大包大揽 ...

  3. [六字真言]5.咪.功力不足,学习前端JavaScript异常

    A Guide to Proper Error Handling in JavaScript 这是关于JavaScript中异常处理的故事.如果你相信 墨菲定律 ,那么任何事情都可能出错,不,一定会出 ...

  4. springmvc上传文件异常

    症状: error:org.springframework.web.multipart.MultipartException: Current request is not a multipart r ...

  5. WebApi传参总动员(填坑)

    本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...

  6. SpringMVC上传文件

    SpringMVC中上传文件还是比较方便的,Spring内置了一些上传文件的支持类,不需要复杂的操作即可上传文件. 文件上传需要两个jar支持,一个是commons-fileupload.jar和co ...

  7. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  8. 【解决】AWS服务控制台中上传文件失败

    使用IE 11,在 AWS Services Console 中不管是 S3 还是 Elastic Beanstalk 的页面中上传页面都会失败,提示信息如下: A problem occurred ...

  9. 【重构】 利用 cos 组件实现jsp中上传附件

    利用JSP&Servlet重构项目 利用 cos 组件实现jsp中上传附件 fileUpload.jsp --> FileUploadController.java --> fil ...

随机推荐

  1. python语言程序设计2

    1, 代码高亮色彩体系 2, 缩进,一行代码开始前的空白区域,表达程序的格式框架 单层缩进,多层缩进 特点 概念,缩进是语法的一部分,缩进不正确的话可能会导致程序运行错误 用处(意义),是表达代码间包 ...

  2. SQLServer数据库还原:无法在已有的mdf文件上还原文件

    如果提示无法在已有的mdf文件上还原文件,请修改如下位置

  3. C# Language Specification 5.0 (翻译)第五章 变量

    变量(variable)表示存储的位置.每个变量都有类型,类型决定变量保存的值的类型.C# 是一门类型安全的语言,C# 编译器会确保变量中保存一个适合类型的值.变量的值可通过赋值或通过使用 ++ 与 ...

  4. More Effective C++ Item14:明智运用exception specifications

    使用exception specifications你必须非常仔细去确保,函数调用的子函数.注册的回调函数不会违背约定.而设计模板内部的异常更难确保. 设计回调机制的时候,如果调用方规定了不抛出异常, ...

  5. cbuild-一个创建和管理C++项目的工具

    cbuild-一个创建和管理C++项目的工具 介绍: 这是个人开发的一个管理C++项目的工具,用shell脚本编写. 可能会不定期更新,也欢迎大家一起完善. 当前开发版本0.5.各版本功能如下: ve ...

  6. OpenGL(3)-三角形

    写在前面 从这节开始,会接触到很多基本概念,原书我也是读了很多遍,一遍一遍去理解其中的意思,以及他们之间的关系. 概念 顶点数组对象:VAO 顶点缓冲对象:VBO 索引缓冲对象:EBO|IBO Ope ...

  7. PAT甲题题解-1034. Head of a Gang (30)-并查集

    给出n和k接下来n行,每行给出a,b,c,表示a和b之间的关系度,表明他们属于同一个帮派一个帮派由>2个人组成,且总关系度必须大于k.帮派的头目为帮派里关系度最高的人.(注意,这里关系度是看帮派 ...

  8. 计算机启动出现 Invalid Partition Table

    计算机启动出现 Invalid Partition Table 解决办法 使用大白菜启动盘进入临时系统,打开程序DiskGenius 如果系统盘(一般为 C 盘)非活动状态,先激活 如果装系统的硬盘不 ...

  9. Day Nine

    站立式会议 站立式会议内容总结 331 今天:学习plupload 遇到问题:无 明天:学习中文分词 442 今天:解决gradle以及项目计划页面的bug 遇到的问题:调用工具类以及配置gradle ...

  10. Daily Scrum - 11/20

    好习惯的养成需要两个星期. ——砖家 今天我们小组又进行了一次愉快的例会,可以看到daily scrum在我们小组已经逐渐变成了每日的好习惯.首先对以下一些团队routine达成了共识: 1.spri ...