一、sringmvc文件上传

1、导包

core、context、expression、beans、commons-logging、aop、spring-web、spring-webmvc、commons-fileupload(文件上传相关包)、commons-io(文件上传相关包)

2、配置web.xml文件

配置前端控制器:springDispatcherservlet

3、创建springmvc的配置文件

(1)在classpath下创建springmvc配置文件;
(2)引入约束:beans、context、mvc;
(3)配置包扫描:只扫描controller;
(4)配置springmvc三大组件注解驱动;
(5)手动配置视图解析器;
(6)配置静态资源处理器;
两种方式:
1)静态资源放在webContent下:

2)将静态资源放在WEB-INF下

表示所有以resources开头的请求路径,均为静态资源。
(7)配置文件上传解析器
1)固定id:multipartResovler;
2)class:CommonsMultipartResovler;

4、编写handler方法处理文件上传

(1)处理文件上传
1)在handler方法的形参列表上声明MultipartFile uploadFile;
2)uploadFile属于上传的文件的输入流;
3)通过uploadFile的一些方法处理上传的文件流;
①获取上传的文件的名字:uploadFile.getOriginalFileName();
②创建存在文件的路径File file;
③将上传的文件存放到指定路径file中:uploadFile.transferTo(file);
注意:在对上传的文件进行处理时,需通过对原文件名的处理,获得保存上传文件的路径,需考虑文件路径是否存在,不存在时需创建file.mkdirs();
(2)解决文件名重复问题
1)在文件名前添加时间戳:new Date().getTime();
2)使用UUID(通用位识别码)+原文件后缀:UUID.randomUUID();

5、前端页面表单设置

(1)请求方式必须位post;
(2)enctype:multipart/form-data;
(3)input标签的type类型位file;
(4)input标签中的name属性必须要和handler方法的形参列表中形参名保持一致。

6、handler方法代码示例

二、springmvc的拦截器

1、定义

针对handler对象,在其执行目标handler之前首先会执行拦截器中得内容,类似于filter得作用。

2、拦截器得实现

第一步:定义interceptor

拦截器有两种定义方式:

(1)实现HandlerInterceptor接口

1)preHandler()方法

a.该方法有返回值,返回值类型为布尔型;
b.该方法在目标方法执行之前执行;
c.只有当preHandler返回值为true得情况,才会执行目标handler,否则不执行;

2)postHandler()方法

该方法在目标方法执行后执行;

3)afterCompletion()方法

preHandler方法返回true,在目标方法执行之后且视图渲染之后执行;

(2)继承自HandlerInterceptorAdapter类

第二步:在springmvc得配置文件中配置拦截器







3、多个拦截器得执行时机

多个拦截器窒执行顺序是根据其配置的顺序执行的。

(1)两个拦截器都返回true

拦截器中的方法的执行顺序,如图所示
preHandler1 >> preHandler2 >> postHandler2>> postHandler1 >>afterCompletion2 >> afterCompletion1
image.png

(2)第一个拦截器返回true,第二个拦截器返回false

拦截器中的方法的执行顺序,如图所示
preHandler1 >> preHandler2 >> afterCompletion1

原因:第二个拦截器执行完preHandler2方法,返回false,不会再执行handler方法,则不会执行postHandler2方法;preHandler1返回true,所以可以执行afterCompletion1方法。
image.png

4、使用拦截器进行权限控制

拦截器中的preHandler可以根据其返回值控制对于目标handler的访问;
可以运用这个特性,用于进行权限的控制:
(1)当用户登陆之后,才有资格访问相应的资源;
(2)如果用户没有登陆,那么就将用户返回登陆页面。

三、spingmvc的整合

1、导入jar包

(1)springmvc需要的jar包

spring-web、spring-webmvc;

(2)spring需要的jar包

core、beans、context、expression、commons-logging、spring-aop、spring-aspects、aopalliance、aspectsjweaver、spring-jdbc、mysql-connector;

(3)其他辅助类jar包

jstl、lombok;

2、配置web.xml配置文件

(1)配置web应用监听器

1)作用:监听web应用的启动,当应用启动的时候要加载spring的配置文件,创建对象;
2)关键字:ContextLoaderLinster(在eclipse中可通过输入关键字,同构alt+/快捷生成);
3)配置:

contextConfigLocation
spring配置文件地址classpath:applicationContext.xml


ContextLoaderListener的全限定名

(2)配置前端控制器

springDispatcherServlet;

3、配置springmvc配置文件

(1)导入约束

beans、context、mvc;

(2)配置相关配置

1)配置包扫描:此处只扫描controller
2)开启三大组建的注解驱动
3)配置视图解析器
4)配置静态资源处理器
5)配置拦截器
6)配置消息转换器工厂

4、配置properties配置文件

在classpath下创建配置文件
#jdbc properties
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc.:mysql://localhost:3306/库名?characterEncoding
jdbc.username = root
jdbc.password = root

5、配置spring的配置文件

(1)导入约束

beans、context;

(2)配置相关配置

1)加载jdbc.properties文件,为jdbc连接数据库提供数据源

2)配置包扫描,在需要创建对象的类上添加注解
注意:此处扫描除controller以外的包;
3)配置数据源
4)配置jdbcTemplate
5)配置事务管理器
6)开启事务的注解驱动
注意:
①spring的配置文件可以拆分成spring-service.xml和spring-dao.xml的配置文件,这样就将dao层,service层和controller层分开进行了配置。
②在controller的类上可添加@RestController注解,相当于@ResponseBody和@Controller注解。

6、联通测试