• SpringMVC之文件上传异常处理


      一般情况下,对上传的文件会进行大小的限制。如果超过指定大小时会抛出异常,一般会对异常进行捕获并友好的显示出来。以下用SpringMVC之文件上传进行完善。

      首先配置CommonsMultipartResolver,必须开启resolveLazily,该参数表示延迟解析,否则无法在Controller抛出异常

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="resolveLazily" value="true" />
        <property name="defaultEncoding" value="utf-8" />
        <property name="maxUploadSize" value="100" />
    </bean>

      现在,当文件超过指定大小时就会抛出异常了,接着就是捕获异常了。该上传的Controller中加入该方法用来捕获MaxUploadSizeExceededException:

    @ExceptionHandler(MaxUploadSizeExceededException.class)   
    public ModelAndView handleException(Exception e) throws Exception {
        return new ModelAndView("upload").addObject("msg", "文件太大!");
    }

      注意,该方法的参数不能含有Model。

      以上这种方法只会捕获该Controller抛出的异常,如果想定义全局的异常处理器,可使用@ControllerAdvice

    package cn.powerfully.demo.web.controller;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.multipart.MaxUploadSizeExceededException;
    import org.springframework.web.servlet.ModelAndView;
    
    @ControllerAdvice
    public class ExceptionResolver {
        
        @ExceptionHandler(MaxUploadSizeExceededException.class)
        public ModelAndView handlerMaxUploadSizeExceededException(MaxUploadSizeExceededException e){
            return new ModelAndView("upload").addObject("msg", "文件太大!");
        }
        
    }

      该方法也能实现一样的效果,但是它是针对全局的。对于全局的异常处理器来说,处理肯定不能这么写,这里只是演示写法而已...

  • 相关阅读:
    查询不同类别中最大的一条
    thinkphp模版调用函数方法
    mysql中explain的用法
    简易PHP多文件上传源码
    JS实现:鼠标悬停图片,图片由彩色变为灰色
    PHP分页基础教程之简单分页原理
    MYSQL建立索引需要注意以下几点!!!
    php_扑克类
    详细介绍Linux shell脚本基础学习(一)
    详细介绍Linux shell脚本基础学习(二)
  • 原文地址:https://www.cnblogs.com/loading4/p/6357810.html
Copyright © 2020-2023  润新知