一、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
(2)第一个拦截器返回true,第二个拦截器返回false
拦截器中的方法的执行顺序,如图所示:
preHandler1 >> preHandler2 >>
afterCompletion1
原因:第二个拦截器执行完preHandler2方法,返回false,不会再执行handler方法,则不会执行postHandler2方法;preHandler1返回true,所以可以执行afterCompletion1方法。
4、使用拦截器进行权限控制
拦截器中的preHandler可以根据其返回值控制对于目标handler的访问;
可以运用这个特性,用于进行权限的控制:
(1)当用户登陆之后,才有资格访问相应的资源;
(2)如果用户没有登陆,那么就将用户返回登陆页面。
三、spingmvc的整合
1、导入jar包
(1)springmvc需要的jar包
(2)spring需要的jar包
core、beans、context、expression、commons-logging、spring-aop、spring-aspects、aopalliance、aspectsjweaver、spring-jdbc、mysql-connector;
(3)其他辅助类jar包
2、配置web.xml配置文件
(1)配置web应用监听器
1)作用:监听web应用的启动,当应用启动的时候要加载spring的配置文件,创建对象;
2)关键字:ContextLoaderLinster(在eclipse中可通过输入关键字,同构alt+/快捷生成);
3)配置:
(2)配置前端控制器
3、配置springmvc配置文件
(1)导入约束
(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)导入约束
(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注解。