持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
俗话说:温故而知新,学习SSM框架也有一段时间了,在开发项目的时候虽然处于会用的程度,但是对于这个框架的理解仍然不够深刻,因此进行一个复习,加深自己对于SSM框架的理解,同时我也会尽量将这些基础点以我自身的理解写出来,希望能对大家有所帮助
文件上传
文件上传客户端三要素
- 表单项type = "file"
- 表单的提交方式是POST
- 表单的enctype是多部分表单形式,即enctype = "multipart/form-data"
文件上传原理
- 当form表单修改为多部分表单时,request.getParameter()将失效
- enctype="application/x-www-form-urlencoded"时,form表单的正文内容是:key=value&key=value
- 当form表单的enctype取值为multipart/form-data时,请求正文内容就变成多部分形式
单文件上传实现
- 导入fileupload和io坐标
- 在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>
- 编写文件上传代码
多文件上传实现
在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思想的具体实现
拦截器和过滤器的区别
快速入门
- 编写拦截器类 继承HandlerInterceptor方法 并且重写相应方法
- 在spring-mvc.xml中配置拦截器
配置多个拦截器
控制台输出信息如下:
顺序按照spring-mvc中配置的拦截器的顺序
拦截器方法说明
SpringMVC异常处理机制
异常处理的思路
异常处理的两种方式
- 使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver(其内部思想是建立不同类型的异常类与报错视图的一一映射关系,什么类型的异常就返回什么视图)
- 实现Spring的异常处理接口HandlerExceptionResolver,自定义自己的异常处理器(常用,符合开发场景)
简单异常处理器SimpleMappingExceptionResolver
自定义异常处理
步骤
- 创建异常处理器类 实现HandlerExceptionResolver
- 在spring-mcv.xml中配置异常处理器
- 编写异常页面
- 测试页面跳转