SpringMVC-04
SpringMVC-04
文件上传
文件上传在SpringMVC中如何实现:
准备工作前端控制器 , SpringMVC两个标配
1、准备一个文件上传的表单
2、导入文件上传需要的jar包
commons-fileupload-1.2.1.jar、commons-io-1.4.jar
3、配置文件上传解析器 CommonsMultipartResolver
4、配置Controller控制器的代码
准备一个文件上传的表单
1 | |
导入文件上传需要的jar包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
spring-aop-5.2.5.RELEASE.jar
spring-aspects-5.2.5.RELEASE.jar
spring-beans-5.2.5.RELEASE.jar
spring-context-5.2.5.RELEASE.jar
spring-core-5.2.5.RELEASE.jar
spring-expression-5.2.5.RELEASE.jar
spring-jcl-5.2.5.RELEASE.jar
spring-web-5.2.5.RELEASE.jar
spring-webmvc-5.2.5.RELEASE.jar
配置文件上传解析器
1 | |
编写文件上传的Controller控制器中的代码
1 | |
使用ResponseEntity返回值处理文件下载
ResponseEntity类可以设置响应的内容。分别包含,响应行,响应体,响应头。
1 | |
使用@ResponseBody将返回的数据转成json
使用的步骤如下
1、导入json相关的包到web工程中
jackson-annotations-2.1.5.jar
jackson-core-2.1.5.jar
jackson-databind-2.1.5.jar
2、编写一个请求的方式接收请求,并返回数据对象
3、在方法上添加注解@ResponseBody自动将返回值json化
Controller中的代码:
1 | |
打开浏览器测试如下

使用@RequestBody将客户端的json转换为Java对象
1 | |
js代码:
1 | |
Controller中的代码:
1 | |
HttpMessageConverter原理
HttpMessageConverter
1) HttpMessageConverter
2) HttpMessageConverter
① Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)
② Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对象写到响应流中,响应流支持的媒体类型在MediaType 中定义。
③ List
④ T read(Class<? extends T> clazz,HttpInputMessage inputMessage):将请求信息流转换为 T 类型的对象。
⑤ void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为 contentType。
3) 如果需要自定义HttpMessageConverter消息转换器,可以通过继承 org.springframework.http.converter.AbstractHttpMessageConverter
a) T readInternal(Class<? **extends** Person> clazz, HttpInputMessage inputMessage) 将客户端消息转换成为服务器需要的类型
b) boolean supports(Class<?> clazz) 判断是否支持对指定类型的处理
c) void writeInternal(Person person, HttpOutputMessage outputMessage) 将Controller控制器返回类型转换为客户端需要的数据

异常处理
使用@ExceptionHandler注解处理异常
1 | |
当有多个注解@ExceptionHandler标识的异常处理方法时,异常类越精确越优先调用
@ExceptionHandler标识的方法是局部异常处理方法,它只对所在的Controller中抛出的异常有效。
使用@ControllerAdvice注解处理异常
1 | |
异常处理优先顺序
在局部异常处理和全局异常处理同时存在的时候,优先顺序是:
1、局部优先 —->>>> 2、精确优化
使用SimpleMappingExceptionResolver类映射异常跳转
1 | |
三大框架ssm(Spring+SpringMVC+Mybatis)的整合
测试数据库
1 | |
创建一个动态Web工程, 并mybatis逆向工程生成代码
根据以上的数据库表,使用 Mybatis 逆向工程生成**JavaBean** 、 Mapper**接口** 、 Mapper.xml 配置文件
直接生成到此web模块下, 并创建jdbc.properties属性配置文件 ,mybatis-config.xml核心配置文件

然后导入整合Spring+SpringMVC+Mybatis的所有jar包
aop 切入点表达式jar包:
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
数据库连接池:
druid-1.1.9.jar
json的包:
jackson-annotations-2.10.3.jar
jackson-core-2.10.3.jar
jackson-databind-2.10.3.jar
原生Junit测试:
junit_4.12.jar
org.hamcrest.core_1.3.0.jar
Mybatis的包:
mybatis-3.5.1.jar
Mybatis到Spring的整合包:
mybatis-spring-2.0.4.jar
数据库驱动包:
mysql-connector-java-5.1.37-bin.jar
Spring切面包:
spring-aop-5.2.5.RELEASE.jar
spring-aspects-5.2.5.RELEASE.jar
Spring核心包:
spring-beans-5.2.5.RELEASE.jar
spring-context-5.2.5.RELEASE.jar
spring-core-5.2.5.RELEASE.jar
spring-expression-5.2.5.RELEASE.jar
spring-jcl-5.2.5.RELEASE.jar
Spring数据库访问包:
spring-jdbc-5.2.5.RELEASE.jar
spring-orm-5.2.5.RELEASE.jar
spring-tx-5.2.5.RELEASE.jar
Spring测试包:
spring-test-5.2.5.RELEASE.jar
SpringMVC需要的包:
spring-web-5.2.5.RELEASE.jar
spring-webmvc-5.2.5.RELEASE.jar
开始整合Spring + Mybatis
jdbc.properties属性配置文件
1 | |
Mybatis核心配置文件
1 | |
applicationContext.xml配置文件:
1 | |
测试Mybatis和Spring整合成功
只要能成功注入BookMapper**说明Mybatis**中的Mapper**接口已经注入到Spring**容器中了。说明整合成功!!!
1 | |
Spring添加事务管理
编写BookService
1 | |
BookServiceImpl实现类
1 | |
在applicationContext.xml配置文件中添加事务管理
1 | |
BookService的测试
1 | |
开始整合Spring+SpringMVC框架
创建springmvc的配置文件springmvc.xml配置文件,内容如下:
1 | |
修改applicationContext.xml中包扫描的配置
1 | |
在web.xml中添加如下配置:
web.xml中的配置:
1 | |
编写BookController测试三大框架整合是否成功
1 | |