1.所需要Jar包
<!-- Spring3. 0.1 包 -->
org.springframework.web- 3.0 . 1 系列
<!-- 公共包 --> slf4j-api- 1.5 . 6 .jar
slf4j-log4j12- 1.5 . 6 .jar
log4j- 1.2 . 13 .jar
commons-logging- 1.1 . 1 .jar
asm- 3.1 .jar
cglib- 2.2 .jar
<!-- mybatis与Spring的整合所需的包 --> mybatis- 3.0 . 5 .jar
aopalliance- 1.0 .jar
mybatis-spring- 1.0 . 1 .jar
mybatis-generator-core- 1.3 . 1 .jar(mybatis代码生成器包)
<!-- jdbc driven --> mysql-connector-java- 3.1 . 6 -bin.jar
<!-- JSR验证-Hibernate validate 4.1 -->
hibernate-validator- 4.1 . 0 .Final.jar
validation-api- 1.0 . 0 .GA.jar
<!-- Spring Json 支持包 --> jackson-all- 1.8 . 1 .jar
|
2.web.xml配置
Servlet配置
org.springframework.web.servlet.DispatcherServlet
init-param配置servlet初始化文件.
以及servlet-mapping配置.
应用路径配置
webAppRootKey
Log4j配置:Log4jConfigLocation、Log4jRefreshInterval
Spring上下文配置:contextConfigLocation
Spring字符集过滤器配置:org.springframework.web.filter.CharacterEncodingFilter
Spring监听器配置:org.springframework.web.context.ContextLoaderListener
log4j监听器配置:org.springframework.web.util.Log4jConfigListener
3.spring mvc - servlet.xml配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<!-- 启动mvc注解驱动 --> < mvc:annotation-driven />
<!-- 组件scanner主要是自动去注入指定包里的对象 --> < context:component-scan base-package = "com.los.mvc.controller" />
<!-- ViewResolver & View 映射关系 --> <!-- InternalResourceViewResolver 基于resource对jsp/jstl的支持 --> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name = "prefix" value = "/WEB-INF/views/" />
< property name = "suffix" value = ".jsp" />
<!-- InternalResourceViewResolver viewClass默认值就是JstlView -->
< property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" ></ property >
</ bean >
<!-- 自定义拦截器配置 -->
< mvc:interceptors >
< mvc:interceptor >
< mvc:mapping path = "/json*" />
< bean class = "com.los.mvc.interceptor.MyInterceptor" ></ bean >
</ mvc:interceptor >
</ mvc:interceptors >
<!-- 国际化配置 -->
< bean id = "messageSource" class = "org.springframework.context.support.ResourceBundleMessageSource" >
< property name = "basename" value = "message" ></ property >
</ bean >
|
4. Spring上下文 -- applicationContext.xml 配置
<!-- 支持注解 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<import resource="service.xml"/>
<import resource="dao.xml"/>
<import resource="orm.xml"/>
service.xml dao.xml 配置@service 和 @Repository
5. Mybatis3.0.5-Spring 整合 -- orm.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<!-- DataSource配置 --> < bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
< property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
< property name = "username" value = "root" />
< property name = "password" value = "root" />
</ bean >
<!-- 注册事务管理器(Mybatis将事务转交给Spring来管理) --> < bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name = "dataSource" ref = "dataSource" />
</ bean >
<!-- SqlSessionFactory配置(Mybatis核心是sqlSessionFactory来获取orm处理对象, dataSource, mapperLocations配置mybaits自动生成的xml文件.就是注入映射关系.) --> < bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" >
< property name = "dataSource" ref = "dataSource" />
< property name = "mapperLocations" value = "classpath:/com/los/mvc/mapper/*.xml" />
</ bean >
<!-- MapperScanner配置.自动去搜索mapper里的对象,并注入. --> < bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
< property name = "basePackage" value = "com.los.mvc.dao" />
</ bean >
<!-- 启动Spring注解事务 --> < tx:annotation-driven />
|
6. mybatis自动生成器配置 -- generatorConfig.xml
sqlMapGenerator --sqlMpper.xml生成器
javaClientGenerator --ModelDao生成器
javaModelGenerator --Model生成器
com.los.util.MBG.java 运行会自动生成mybatis代码.然后再配置orm.xml
7. Controller层配置
类注解
@Controller
@RequestMapping("/json")为访问该层的路径.
方法注解
@RequestMapping(method = RequestMethod.GET) 只有get方法才能访问.
@ResponseBody 自动将返回的封装成json,方法返回值必须是map<String,?>类型.
@RequestMapping(value="/doLogin") value=”doLogin”为访问该方法的handler mapping
return "login/login";会通过ViewResolver找到对应的view
return "redirect:/user/toRegister.html";为spring-mvc的重定向.
@InitBinder()为绑定器,可以为request传来的数据进行数据类型转换.
数据自动验证
方法中参数需要有后面的两个(@Valid User user,BindingResult result).@Valid的支持标准是JSR,Hibernate Validate 4是对该标准比较好的实现.需要在Model类中配置验证的注解.判断验证是否正确通过result.hasErrors()或者result.hasFieldErrors()来判断,通过result.getAllErrors()或者result.getFieldErrors()来获取Errors然后遍历Errors获取相关想要的信息,例如Error.getDeafaultMessage(),这个是获取错误信息.具体的错误验证机制还地在Model类中配置.
属性注解
@Autowired 会为该属性自动注入bean,默认方式是byType.也可以用@Resource这个注解默认是byName.
8. Service层配置.(业务层)
类注解
@Service 为@Component的子注解,分工更明细.
@Transactional 可以为该业务类声明一个全类的事务.也可以将事务写在方法上.根据不同的需要.
方法注解
@Transactional(readOnly = true)
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 类的事务声明,可以设置隔离级别和传播属性,以及要回滚的异常名或者异常类,不需要回滚的异常名或者异常类.异常通常抛出给controller层来处理
属性注解
@Autowired @Resource
9. Repository层配置.(持久层DaoImpl)
类注解
@Repository 为@Component的子注解,意为持久层,分工更明细.一般不在这层处理事务.
10.Entry层配置(Model层)
类注解
@Entry
验证注解,常用的有:
@NotEmpty
@NotNull
@Size(min=2,max=10,message=”xx必须在{min}和{max}之间”)
@DecimalMax
@AssertFalse @AssertTrue
@Null
@Valid
@URL(protocol=,host=, port=,regexp=, flags=)
一般情况下属性或者方法可以放多个约束注解,hibernate validate会以随机的顺序去验证这些约束.所以多个注解约束会有可能同一个属性返回多个message.所以有时候需要只返回一条message,则需要使用验证组Groups来达成.组别序列可以把一系列的组别按照一定的顺序排列在一起,然后逐个验证,只要有一个组别验证失败,就不继续验证剩余的组别。
@GroupSequence({User.class,GroupB.class,GroupC.class})验证组的顺序,约束里不指定group的为默认的User.class组.
约束组放在类前,User.class为默认的约束组,GroupB,GroupC为空的接口.写在User外同个java文件下.
@NotEmpty(message="密码不能为空")
@Size(min=4,max=20,message="密码长度必须在{min}-{max}范围内",groups = GroupB.class)
如果@NotEmpty验证失败了,就不会继续验证@Size
本文章转载至LosMessi博客