[六字真言]6.吽.SpringMVC中上传大小异常填坑
最近在讲课的时候,遇到了关于上传文件过大的时候浏览器无法响应的问题,配置了捕获异常,有的学生浏览器好使,有的学生浏览器不好用!莫名其妙!
MaxUploadSizeExceededException进入了无限的死循环,╮(╯▽╰)╭ 悲催! 为什么呢?
配置上传信息
在springmvc的核心配置文件配置如下信息
<!-- 5.配置上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 可以使用计算的 value="#{20*1024*1024}"/> -->
<property name="maxUploadSize" value="20971520"/>
<property name="maxInMemorySize" value="2048"/>
<property name="resolveLazily" value="true"/>
<!-- 配置的是虚拟路径 -->
<property name="uploadTempDir" value="/uploadFile/temp"/>
</bean>
- id="multipartResolver" 需要去修改其id的名称
- resolveLazily 属性启用是为了推迟文件解析,以便在上传操作中捕获文件大小异常
第一种方式:Controller使用异常注解
@ExceptionHandler(Exception.class)
public String handleException(Exception ex,HttpServletRequest request) {
if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
request.setAttribute("error", "上传文件过大");
}
return "要转向的页面,可以自由定义或者是原页面.";
}
第二种方式:统一异常处理方式
在SpringMVC的核心配置文件配置统一的异常信息处理
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">maxUploadExceeded</prop>
</props>
</property>
问题: 使用拦截器解决客户端无响应问题
关于spring mvc MaxUploadSizeExceededException 死循环解决方案
这个问题困扰了我很久了,其实我之前有一种解决方案是在前端进行判断操作,哈哈,之后的笔记会给大家奉献上!
在springmvc的核心配置文件配置如下信息
<!-- 5.配置上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 可以使用计算的 value="#{20*1024*1024}"/> -->
<property name="maxUploadSize" value="20971520"/>
<property name="maxInMemorySize" value="2048"/>
<!-- 配置的是虚拟路径 -->
<property name="uploadTempDir" value="/uploadFile/temp"/>
</bean>
没有定义延时解析
定义拦截器
public class FileUploadInterceptor extends HandlerInterceptorAdapter {
@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;
}
private long maxSize;
public void setMaxSize(long maxSize) {
this.maxSize = maxSize;
}
}
配置拦截器
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.shxt.interceptor.FileUploadInterceptor">
<property name="maxSize" value="4194304"/>
</bean>
</mvc:interceptor>
[六字真言]6.吽.SpringMVC中上传大小异常填坑的更多相关文章
- [六字真言]4.叭.SpringMVC异常痛苦
"叭",除畜生道劳役之苦: 在学过的三阶段的时候,我们对SpringMVC的异常处理,一直可以算是简单中透着暴力,不要不重视异常!真的很重要,不要让它处在尴尬的位置! 在二阶段或者 ...
- [六字真言]2.嘛.异常定制和通用.md
幻世当空 恩怨休怀 舍悟离迷 六尘不改 且怒且悲且狂哉! 最近一直在循环的一首歌! 丰富自己,比取悦他人更有力量.种下梧桐树,引得凤凰来.你若盛开,蝴蝶自来! 言归正传! 言归正传! 不要去大包大揽 ...
- [六字真言]5.咪.功力不足,学习前端JavaScript异常
A Guide to Proper Error Handling in JavaScript 这是关于JavaScript中异常处理的故事.如果你相信 墨菲定律 ,那么任何事情都可能出错,不,一定会出 ...
- springmvc上传文件异常
症状: error:org.springframework.web.multipart.MultipartException: Current request is not a multipart r ...
- WebApi传参总动员(填坑)
本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...
- SpringMVC上传文件
SpringMVC中上传文件还是比较方便的,Spring内置了一些上传文件的支持类,不需要复杂的操作即可上传文件. 文件上传需要两个jar支持,一个是commons-fileupload.jar和co ...
- springmvc上传文件,抄别人的
SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...
- 【解决】AWS服务控制台中上传文件失败
使用IE 11,在 AWS Services Console 中不管是 S3 还是 Elastic Beanstalk 的页面中上传页面都会失败,提示信息如下: A problem occurred ...
- 【重构】 利用 cos 组件实现jsp中上传附件
利用JSP&Servlet重构项目 利用 cos 组件实现jsp中上传附件 fileUpload.jsp --> FileUploadController.java --> fil ...
随机推荐
- SSIS 包配置
在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部 ...
- Java英文单词Java基础常见英语词汇
Java英文单词Java基础常见英语词汇(共70个) ...
- Kubernetes调用vSphere vSAN做持久化存储
参考 1.vSphere Storage for Kubernetes 2.IBM vSphere Cloud Provider 3.GitHub vSphere Volume examples 一. ...
- 1084. Broken Keyboard (20)-水题
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...
- Linux 第五章 学习笔记
---恢复内容开始--- 第五章 系统调用 一.与内核通信 1.系统调用在用户控件进程和硬件设备之间添加了一个中间层. 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运 ...
- LINUX基础实验报告
实验一:主要是介绍Linux系统概况,无运行代码. 实验二:Linux的基本操作 重要知识点 [Tab] 使用Tab键来进行命令补全,Tab键一般键盘是在字母Q旁边,这个技巧给你带来的最大的好处就是当 ...
- js生成uuid代码
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 3 ...
- Day Eight
站立式会议 站立式会议内容总结 331 今天:学习树状自关联 hibernate配置,查询 详情:http://blog.csdn.net/u011644423/article/details/498 ...
- Beta版本冲刺(三)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- php://input 和 $HTTP_ROW_POST_DATE
前言: 年前又换了一家公司.毕业半年,加上之前的实习,第四家公司了.短短半年经历了很多,就这样度过了我的2018.毕业.实习.就业.创业.公司倒闭.频繁跳槽.开工作室净赔.年前自我感觉糟透了,一团糟, ...