SSM开发框架之SpringMVC(三)

153 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

俗话说:温故而知新,学习SSM框架也有一段时间了,在开发项目的时候虽然处于会用的程度,但是对于这个框架的理解仍然不够深刻,因此进行一个复习,加深自己对于SSM框架的理解,同时我也会尽量将这些基础点以我自身的理解写出来,希望能对大家有所帮助

文件上传

文件上传客户端三要素

  1. 表单项type = "file"
  2. 表单的提交方式是POST
  3. 表单的enctype是多部分表单形式,即enctype = "multipart/form-data"

文件上传原理

  • 当form表单修改为多部分表单时,request.getParameter()将失效
  • enctype="application/x-www-form-urlencoded"时,form表单的正文内容是:key=value&key=value
  • 当form表单的enctype取值为multipart/form-data时,请求正文内容就变成多部分形式

单文件上传实现

  1. 导入fileupload和io坐标

  1. 在spring-mvc.xml中配置文件上传解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--上传文件总大小-->
    <property name="maxUploadSize" value="5242800"/>
    <!--上传单个文件的大小-->
    <property name="maxUploadSizePerFile" value="5242800"/>
    <!--上传文件的编码类型-->
    <property name="defaultEncoding" value="UTF-8"/>
</bean>
  1. 编写文件上传代码

多文件上传实现

在Controller中的业务方法如下(代码中进行的操作是保存到电脑/服务器本地):

@RequestMapping(value="/method")
@ResponseBody
public void save(MultipartFile[] uploadFile) throws IOException{
    for(MultipartFile multipartFile : uploadFile){
        String originalFilename = multipartFile.getOriginalFilename();
        multipartFile.transferTo(new File("C;\\upload\\"+originalFilename));
    }
}

SpringMVC拦截器

作用

SpringMVC的拦截器类似于Servlet开发中的Filter,用于对处理器进行预处理和后处理

将拦截器按一定的顺序联结成一条链,这条链称为拦截器链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现

拦截器和过滤器的区别

快速入门

  1. 编写拦截器类 继承HandlerInterceptor方法 并且重写相应方法

  1. 在spring-mvc.xml中配置拦截器

配置多个拦截器

控制台输出信息如下:

顺序按照spring-mvc中配置的拦截器的顺序

拦截器方法说明

SpringMVC异常处理机制

异常处理的思路

异常处理的两种方式

  • 使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver(其内部思想是建立不同类型的异常类与报错视图的一一映射关系,什么类型的异常就返回什么视图)
  • 实现Spring的异常处理接口HandlerExceptionResolver,自定义自己的异常处理器(常用,符合开发场景)

简单异常处理器SimpleMappingExceptionResolver

自定义异常处理

步骤

  1. 创建异常处理器类 实现HandlerExceptionResolver

  1. 在spring-mcv.xml中配置异常处理器

  1. 编写异常页面
  2. 测试页面跳转