今天开个坑java ssh三大框架搭建整合(注解+XML 用全注解不是很好,有点地方需要用模板的时候XML直接可以复制一段)
1 所用框架、技术
编号
工具
版本
说明
Struts 2
2.3.20
Hibernate
4.3.9
实现持久化操作
Spring
4.1.5
Junit
4
单元测试
2. 开发环境
操作系统
Windows 7
开发工具
Eclipse Java EE
数据库
Oracle 11g
Web容器
Tomcat 7.0.63
JAVA
JDK 1.7
3.建立project
新建一个 dynamic web project
最终的整个工程结构是这样的
4.添加Junit
configure Build Path 后点Add library 选junit4 即可
5.添加Struts2
copy所需的jar包到lib文件夹(先排除struts2-spring-plugin.jar后面会说明原因)
准备struts.xml,web.xml
模板,直接在Struts文件夹里面搜索文件名struts.xml,web.xml。
web.xml(示例)
我这些XML 元素web-app 有版本信息,不一致会报错。
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
5
6
7
8
9 struts2
10 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
11
12
13 struts2
14 /*
15
16
17
18
19
20 index.jsp
21
22
23
struts.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 /index.jsp
22
23
24
25
26
27
28
StrutsAction.java(放在如图位置)
1 packageedu.hainu.knowledge.test;2
3 importcom.opensymphony.xwork2.ActionSupport;4
5
6 public class StrutsAction extendsActionSupport{7
8 //用于 测试单个Struts是否成功
9 publicString execute(){10 System.out.println("success");11 return "success";12 }13 }
启动观察控制台有没有报错,报错的自行百度
用浏览器http://localhost:8080/edu.hainu.knowledge/test.action
http://服务器所在ip:端口号/projectName/actionName.action(注意我已经在struts.xml 配置类后缀为action)
其实这个地址可以也不用记住,我们可以直接run 一个页面,eclipse会自动访问该页面
页面成功跳转,添加struts2成功。
6.添加spring
添加jar包
applicationContext.xml (示例)
同样的可以去spring文件夹搜索applicationContext.xml (QAQ 不知道为什么找不到)
配置一下 component-scan base-package="edu.hainu.knowledge" 就是Sping将会扫描edu.hainu.knowledge包所有类上的注解
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:tx="http://www.springframework.org/schema/tx"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans7 http://www.springframework.org/schema/beans/spring-beans.xsd8 http://www.springframework.org/schema/context9 http://www.springframework.org/schema/context/spring-context.xsd10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
11
12
13
14
15
添加StrutsAction 的注解
@Controller
@Scope("prototype")
1 packageedu.hainu.knowledge.test;2
3 importorg.springframework.context.annotation.Scope;4 importorg.springframework.stereotype.Controller;5
6 importcom.opensymphony.xwork2.ActionSupport;7
8 @Controller9 @Scope("prototype")10 public class StrutsAction extendsActionSupport{11
12 //用于 测试单个Struts是否成功
13 publicString execute(){14 System.out.println("success");15 return "success";16 }17 }
在junit的Spring类
1 packageedu.hainu.knowledge.test;2
3 importorg.junit.Test;4 importorg.springframework.context.ApplicationContext;5 importorg.springframework.context.support.ClassPathXmlApplicationContext;6
7
8
9 public classSpring {10
11 private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");12
13
14 //用于测试单个Spring是否成功
15 @Test16 public void testBean() throwsException {17
18 //Bean的名字 首字母要小写
19 StrutsAction StrutsAction = (StrutsAction) ac.getBean("strutsAction");20 System.out.println(StrutsAction);21 }22
23 }24
单元测试testBean()方法,能正常输出信息 edu.hainu.knowledge.test.StrutsAction@a383aab 表明添加Spring 成功
7.整合spring与struts2
在web.xml中配置Spring的监听器 (配置一下applicationContext.xml 所在位置)
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
5
6
7
8
9 org.springframework.web.context.ContextLoaderListener
10
11
12 contextConfigLocation
13 classpath:applicationContext*.xml
14
15
16
17
18 struts2
19 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
20
21
22 struts2
23 /*
24
25
26
27
28
29 index.jsp
30
31
添加jar包 struts2-spring-plugin-2.3.20.jar(这就是文章开头struts2 排除的jar包,不然会报错)
修改struts.xml ( )
1 <?xml version="1.0" encoding="UTF-8"?>
2 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 /index.jsp
21
22
23
24
25 /WEB-INF/jsp/logAction/list.jsp
26 /WEB-INF/jsp/logAction/saveUI.jsp
27 log_list
28
29
30
31
32 /WEB-INF/jsp/homeAction/{1}.jsp
33
34
35
36
37
38
39
重新启动,访问 http://localhost:8080/edu.hainu.knowledge/test.action
成功跳转表明 整合spring与struts2成功(主要是修改struts.xml 证明)
8.添加hibernate 并且整合 hibernate 与 spring (我的习惯是)
添加jar包 sqljdbc41.jar 用于sqlserver ojdbc6.jar 用于Oracle
applicationContext.xml
管理SessionFactory实例(只需要一个)
声明式事务管理
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:tx="http://www.springframework.org/schema/tx"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans7 http://www.springframework.org/schema/beans/spring-beans.xsd8 http://www.springframework.org/schema/context9 http://www.springframework.org/schema/context/spring-context.xsd10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
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
46
47
48
49
50
51
52
53
54
55
56
57
jdbc.properties
//通过SERVICE_NAME连接
1 jdbcUrl =jdbc:oracle:thin:@//ip:1521/SERVICE_NAME
2 driverClass =oracle.jdbc.driver.OracleDriver3 user =user4 password = password
Hibernate.java
1 packageedu.hainu.knowledge.test;2
3 importorg.hibernate.SessionFactory;4 importorg.junit.Test;5 importorg.springframework.context.ApplicationContext;6 importorg.springframework.context.support.ClassPathXmlApplicationContext;7
8
9
10 public classHibernate {11
12 private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");13
14 //测试SessionFactory15 //用于测试Spring 与 hibernate
16 @Test17 public void testSessionFactory() throwsException {18 SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");19 System.out.println(sessionFactory);20 }21
22 }
单元测试 testSessionFactory()
控制台有输出org.hibernate.internal.SessionFactoryImpl@5cc5e9d2
整合 hibernate 与 spring 成功
9.总结
struts
1.导入相关jar包
2.准备 web.xml struts2.xml
3.测试 action 成功跳转代表成功。
spring
1.导入相关jar包
2.准备 applicationContext.xml
3.测试 能否从spring管理中读取出bean
struts 整 合spring
1.struts2-spring-plugin-2.3.20.jar
2.web.xml 配置spring监听器
3.测试 struts.xml 当Struts2与Spring整合后,class属性可以写bean的名称(类名首字母小写)
hibernate 和 hibernate整合spring
1.导入相关jar包 (以及数据库连接jar包)
2.applicationContext,xml 配置SessionFactory 配置事务管理 修改 jdbc.properties
3.测试 能否从spring管理中读取出sessionFactory