[六字真言]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 {@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;}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 ...
随机推荐
- NServiceBus VS MassTransit 从 stackoverflow.com 翻译而来,希望对这两个技术比较关心的同学有帮助
近段时间在看SOA,在国外网站有很多资料可以查看,本来在中文网站中找到一片关于这两个框架的对比介绍的可惜笔者没有认真翻译,只有花点时间自己翻译了一个版本,希望对技术界的朋友有所帮助. 我正纠结于NSe ...
- laraver框架学习
最近开始学习laravel框架,这个框架在国外很流行,近些年开始在国内流行.自己而是刚开始学习这个框架. 使用composer 更新系统内的依赖包 在终端输入:composer update Entr ...
- mongodump备份小量分片集群数据
1.使用mongodump备份小量分片集群数据 如果一个分片集群的数据集比较小,可以直接使用mongodump连接到mongos实例进行数据备份.默认情况下,mongodump到非primary的节点 ...
- Mysql基础命令(二)select查询操作
条件查询 使用Where进行数据筛选结果为True的会出现在结果集里面 select 字段 from 表名 where 条件; # 例: select * from test_table where ...
- Vulkan入门流程
原文摘自Vulkan入门流程 Vulkan是Khronos Group(OpenGL标准的维护组织)开发的一个新API,它提供了对现代显卡的一个更好的抽象,与OpenGL和Direct3D等现有api ...
- 微软职位内部推荐-Senior Software Engineer-Eco
微软近期Open的职位: The MOD Ecosystem team is dedicated to expanding the reach and value of Office by enabl ...
- PAT甲题题解-1077. Kuchiguse (20)-找相同后缀
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...
- Game over 作业
终于有一篇不拼代码拼码字的作业了,哈哈哈..... 从寒假到这次结束,经历的博客及编码作业的过程 前面七次作业做个分类: 通往博客园和C++的第一步. 知识点:让我们对C++做一个预习,在学C++前有 ...
- Leetcode题库——40.组合总和II
@author: ZZQ @software: PyCharm @file: combinationSum2.py @time: 2018/11/15 18:38 要求:给定一个数组 candidat ...
- CMake系列之一:概念
不同的make工具遵循不同的规范和标准,因此针对不同的标准需要不同的Makefile文件.CMake利用一种平台无关的CMakeList.txt文件定制编译流程,根据目标用户的平台生成本地化的Make ...