Spring MVC文件上传及全局异常处理器

添加依赖

<!--文件上传-->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

配置文件上传解析器

<!--配置文件上传解析器-->
<bean id="multipartResolver" 
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5242880" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

测试

  • 编写controller

    @Controller
    @RequestMapping("/account")
    public class AccountController {
         
    
        @RequestMapping(path="/upload")
        public String upload(HttpServletRequest request, 
                                 MultipartFile upload,Model model) throws IOException {
         
            System.out.println("springmvc方式的文件上传");
            //获取要上传的文件目录
            String path = 
                request.getSession().getServletContext().getRealPath("/uploads");
            System.out.println("path:"+path);
            //根据文件上传的目录创建File对象,如果不存在则创建1个File对象
            File file = new File(path);
            if(!file.exists()){
         
                //创建一个file对象
                file.mkdirs();
            }
            //获取文件上传名称
            String filename = upload.getOriginalFilename();
            //完成文件上传
            upload.transferTo(new File(path,filename));
    
            model.addAttribute("msg", "欢迎你 springmvc");
            return "success";
        }
    }
    
  • 在index.jsp里面定义超链接

        <form action="/account/upload" method="post" enctype="multipart/form-data">
            文件: <input type="file" name="upload"></input>
            <input type="submit" value="提交">
        </form>
    

全局异常处理器

如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。

异常处理思路

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

1587697450668

创建异常处理器

@Component
public class CustomExceptionResolver implements HandlerExceptionResolver {
   

	@Override
	public ModelAndView resolveException(HttpServletRequest request,
					HttpServletResponse response, Object handler, Exception ex) {
   
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("message", ex.getMessage());
		modelAndView.setViewName("error");
		return modelAndView;
	}

}

测试

  • 编写controller
@Controller
@RequestMapping("/account")
public class AccountController {
   

   @RequestMapping("/findAccount14")
    public String findAccount14(Model model) {
   
        model.addAttribute("msg", "欢迎你 springmvc");
        //模拟异常信息
        int i = 10/0;
        return "success";
    }
}
  • 在index.jsp里面定义超链接
<a href="/account/findAccount14">异常处理器</a>

相关推荐

  1. springMVC-文件

    2024-01-19 03:52:02       68 阅读
  2. SpringMVC文件

    2024-01-19 03:52:02       47 阅读
  3. SpringMVC文件和下载

    2024-01-19 03:52:02       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 03:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 03:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 03:52:02       87 阅读
  4. Python语言-面向对象

    2024-01-19 03:52:02       96 阅读

热门阅读

  1. Template -- Vue3

    2024-01-19 03:52:02       53 阅读
  2. Backtrader 文档学习-Indicators 开发

    2024-01-19 03:52:02       56 阅读
  3. 速盾网络:高防ip是什么

    2024-01-19 03:52:02       48 阅读
  4. 文件上传报错总结

    2024-01-19 03:52:02       50 阅读
  5. LC674. 最长连续递增序列

    2024-01-19 03:52:02       62 阅读
  6. Fastapi打包exe后无限启动导致死机的解决办法

    2024-01-19 03:52:02       74 阅读
  7. nlk学习笔记 新闻摘要自动提取

    2024-01-19 03:52:02       47 阅读
  8. Pandas实战100例 | 案例 49: 数值运算

    2024-01-19 03:52:02       50 阅读