实验四: Struts2、Spring 与 Hibernate 整合应用
————学生成绩管理系统
实验要求:
(1) 整合 Struts2、Spring 和 Hibernate 框架
(2) 实现“登录”功能
(3) 实现“学生信息管理”功能
(4) 实现“学生成绩管理”功能
(5) 实现分页功能
实验目的:
掌握 Struts2 的开发步骤
掌握 Hibernate 的开发步骤
掌握 Spring 的开发步骤,理解依赖注入、AOP、事务管理等
掌握 Struts2、Spring 和 Hibernate 框架的整合
掌握分页技术
实验思路:
1、 建库建表
2、 利用分层思想,建 package
3、 添加 Spring 开发能力
4、 添加 Hibernate 开发能力
5、 生成 Hibernate 所需的 POJO 类和映射文件
6、 开发 DAO 层
(1) 新建 DAO 层接口。
^_^
---
---
(2) 新建 DAO 层 实 现 类 ( 该 类 要 实 现 DAO 层接口,继承
HibernateDaoSupport 类)。
(3) 在 Spring 配置文件中增加该 DAO 层实现类的定义,并需要依
赖注入一个 SessionFactory bean 的引用。
7、 开发 Service 层
(1) 新建 Service 层接口。
(2) 新建 Service 层实现类,该类中需要声明所调用 DAO 层接口,
并生其 setter 方法。
(3) 在 Spring 配置文件中增加该 Service 层实现类的定义,并需要
依赖注入 DAO 层的 bean。
8、 实现 WEB 层
(1) 在 web.xml 中增加 struts2 的过滤器和 Spring 的监听器。
(2) 增加 Spring 和 Struts2 的整合文件 struts.properties。
(3) 新建所需的 jsp 文件。
(4) 新建 Action 类,该类要继承 ActionSupport,同时该类要依赖注
入 Service 的 bean(声明+setter 方法)。
(5) 在 Spring 配置文件中增加该 Action 类的定义,并注入 Service
层的 bean。
(6) 在 struts.xml 中增加该 Action 的定义,其中 class 的属性是在
Spring 中定义的该 Action bean 的 id。
9、部署运行
实验步骤:
^_^
---
---
1、 建库、建表
建立数据库 xscj,建立 xsb、dlb、zyb、kcb、cjb 等。
学生信息表:xsb
列名
描述
数据类型
可空
默认值
说明
XH
学号
Char(6)
×
无
主键
XM
姓名
Char(8)
×
无
XB
性别
bit
×
无
1:男,0:女
CSSJ
出生时间
datetime
√
无
ZY_ID
专业 ID
int
×
无
ZXF
总学分
int
√
无
BZ
备注
Varchar(200)
√
无
ZP
照片
mediumblob
√
无
登录表:dlb
列名
描述
数据类型
可空
默认值
说明
id
标识
int
×
自增 1
主键,自增
xh
登录号
char(6)
×
无
外键,xsb 中
xh
kl
口令
char(20)
×
无
专业表:zyb
列名
描述
数据类型
可空
默认值
说明
id
ID
int
×
自增 1
主键
zym
专业名
char(12)
×
无
rs
人数
int
√
0
fdy
辅导员
char(8)
√
无
课程表:kcb
列名
描述
数据类型
可空
默认值
说明
kch
课程号
Char(3)
否
无
主键
kcm
课程名
Char(12)
是
无
kxxq
开课学期
smallint
是
无
1-8
xs
学时
int
是
0
xf
学分
int
是
0
连接表:xs_kcb
列名
描述
数据类型
可空
默认值
说明
xh
学号
char(6)
主键
kch
课程号
char(3)
主键
成绩表:cjb
^_^
---
---
列名
描述
数据类型
可空
默认值
说明
Xh
学号
Char(6)
否
无
主键
Kch
课程号
Char(3)
否
无
主键
Cj
成绩
int
是
0
xf
学分
int
是
0
2、 设计系统架构
利用分层架构模式,设计系统架构,系统可分为表示层、业务逻
辑层和数据持久层。如下图所示:
建立相应 package。
3、 添加 Spring 开发能力
(1) 定义 User Library
(2) 增加 Spring 开发能力(添加 jar 包——使用 User Library,新建
applicationContext.xml)
注:可以不增加 User Library,直接把需要的 jar 包拷贝到 classpath
下。
4、 实现 Hibernate 持久层
(1) 添加 Hibernate 开发能力
^_^
---
---
添加 jar 包:如果第一步中已增加,此步可以省略。
注意:需要把 Hibernate 交由 Spring 来管理,其中包括在 Spring
中配置“dataSource”和“sessionFactory”
(2) 通过 MyEclipse 中 Hibernate 反向工程,分别生成表对应的
POJO 类及相应的映射文件。
注意:所有的 POJO 类和映射文件(*.hbm.xml)放在 org.model
这个 package 下。
难点 1:xsb(学生表)的映射文件中需要设置和专业的多对一关系,
参考代码如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.model.Xsb" table="XSB" schema="dbo" catalog="XSCJ">
<id name="xh" type="java.lang.String">
<column name="XH" length="6" />
<generator class="assigned" />
</id>
<property name="xm" type="java.lang.String">
<column name="XM" length="50" />
</property>
<property name="xb" type="java.lang.Byte">
<column name="XB" />
</property>
<property name="cssj" type="java.util.Date">
<column name="CSSJ" length="23" />
</property>
<property name="zxf" type="java.lang.Integer">
<column name="ZXF" />
</property>
<property name="bz" type="java.lang.String">
<column name="BZ" length="500" />
</property>
^_^
---
---