实验五.docx
- 文档编号:8562860
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:70
- 大小:40.98KB
实验五.docx
《实验五.docx》由会员分享,可在线阅读,更多相关《实验五.docx(70页珍藏版)》请在冰豆网上搜索。
实验五
《JavaEE应用开发基础》
实验手册
实验五:
Struts2、Spring与Hibernate整合应用
————学生成绩管理系统
济南大学
2010年4月
版本:
ver1.0
目录
实验要求:
2
实验思路:
2
1、建库建表2
2、利用分层思想,建package2
3、添加Spring开发能力2
4、添加Hibernate开发能力2
5、生成Hibernate所需的POJO类和映射文件2
6、开发DAO层2
7、开发Service层3
8、实现WEB层3
9、部署运行4
实验目的:
4
实验步骤:
4
1、建库、建表4
2、设计系统架构5
3、添加Spring开发能力6
3.1定义UserLibrary6
3.2增加Spring开发能力6
4、实现Hibernate持久层6
4.1添加Hibernate开发能力6
4.2生成POJO类和映射文件7
4.3难点1:
多对一关系7
4.4难点2:
复合主键7
4.5重点:
映射文件在Spring配置文件中注册9
5、实现DAO11
6、实现业务逻辑层(Service层)19
6.1Service接口19
6.2Service层实现类(package:
org.service.imp):
22
6.3难点:
依赖注入26
7、对业务逻辑增加事务管理27
8、实现表示层(Action类和JSP文件)28
8.1配置web.xml28
8.2增加struts.properties文件29
8.2增加Action类29
8.4验证是否登录的过滤器42
9、增加数据校验46
10、分页的实现47
10.1实现思路48
10.2实现步骤48
11、最后部署运行。
52
实验要求:
(1)整合Struts2、Spring和Hibernate框架
(2)实现“登录”功能
(3)实现“学生信息管理”功能
(4)实现“学生成绩管理”功能
(5)实现分页功能
实验思路:
1、建库建表
2、利用分层思想,建package
3、添加Spring开发能力
4、添加Hibernate开发能力
5、生成Hibernate所需的POJO类和映射文件
6、开发DAO层
(1)新建DAO层接口。
(2)新建DAO层实现类(该类要实现DAO层接口,继承HibernateDaoSupport类)。
(3)在Spring配置文件中增加该DAO层实现类的定义,并需要依赖注入一个SessionFactorybean的引用。
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中定义的该Actionbean的id。
9、部署运行
实验目的:
掌握Struts2的开发步骤
掌握Hibernate的开发步骤
掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等
掌握Struts2、Spring和Hibernate框架的整合
掌握分页技术
实验步骤:
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开发能力
3.1定义UserLibrary
3.2增加Spring开发能力
添加jar包——使用UserLibrary
新建applicationContext.xml
4、实现Hibernate持久层
4.1添加Hibernate开发能力
添加jar包:
如果第一步中已增加,此步可以省略。
注意:
需要把Hibernate交由Spring来管理,其中包括在Spring中配置“dataSource”和“sessionFactory”
4.2生成POJO类和映射文件
通过MyEclipse中Hibernate反向工程,分别生成表对应的POJO类及相应的映射文件(POJO类和映射文件略)。
注意:
所有的POJO类和映射文件(*.hbm.xml)放在org.model这个package下。
4.3难点1:
多对一关系
xsb(学生表)的映射文件中需要设置和专业的多对一关系,参考代码如下:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
4.4难点2:
复合主键
成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
--
MappingfileautogeneratedbyMyEclipsePersistenceTools
-->
--复合主键配置其中两个key-property,分别对应两个主键-->
对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:
CjbId.java
packageorg.model;
publicclassCjbIdimplementsjava.io.Serializable{
privateStringxh;
privateStringkch;
publicCjbId(){
}
publicCjbId(Stringxh,Stringkch){
this.xh=xh;
this.kch=kch;
}
publicStringgetXh(){
returnthis.xh;
}
publicvoidsetXh(Stringxh){
this.xh=xh;
}
publicStringgetKch(){
returnthis.kch;
}
publicvoidsetKch(Stringkch){
this.kch=kch;
}
}
Cjb.java
packageorg.model;
publicclassCjbimplementsjava.io.Serializable{
privateCjbIdid;
privateIntegercj;
privateIntegerxf;
publicCjb(){
}
publicCjb(CjbIdid){
this.id=id;
}
publicCjb(CjbIdid,Integercj,Integerxf){
this.id=id;
this.cj=cj;
this.xf=xf;
}
publicCjbIdgetId(){
returnthis.id;
}
publicvoidsetId(CjbIdid){
this.id=id;
}
publicIntegergetCj(){
returnthis.cj;
}
publicvoidsetCj(Integercj){
this.cj=cj;
}
publicIntegergetXf(){
returnthis.xf;
}
publicvoidsetXf(Integerxf){
this.xf=xf;
}
}
4.5重点:
映射文件在Spring配置文件中注册
所有的映射文件需要在Spring配置文件中注册,参考applicationContext.xml如下:
……
--定义数据库驱动-->
--定义数据库URL-->
mysql: //localhost: 3306/xscj"> --定义数据库的用户名--> --定义数据库密码--> --定义Hibernate的SessionFactory--> --定义SessionFactory必须注入DataSource--> --定义Hibernate的SessionFactory属性--> org.hibernate.dialect.MySQLDialect --定义POJO的映射文件--> …… 5、实现DAO DAO层接口: DlDao.java: packageorg.dao.imp; importjava.util.List; importorg.dao.DlDao; importorg.model.Dlb; importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; publicclassDlDaoImpextendsHibernateDaoSupportimplementsDlDao{ publicbooleanexistXh(Stringxh){ Listlist=getHibernateTemplate().find("fromDlbwherexh=? ",xh); if(list.size()>0) returntrue; else returnfalse; } publicDlbfind(Stringxh,Stringkl){ Stringstr[]={xh,kl}; Listlist=getHibernateTemplate().find("fromDlbwherexh=? andkl=? ",str); if(list.size()>0) return(Dlb)list.get(0); else returnnull; } publicvoidsave(Dlbuser){ getHibernateTemplate().save(user); } } 所有DAO层的实现类需要继承HibernateDaoSupport类,DlDaoImpl.java参考代码如下: packageorg.dao.imp; importjava.util.List; importorg.dao.DlDao; importorg.model.Dlb; importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; publicclassDlDaoImpextendsHibernateDaoSupportimplementsDlDao{ publicbooleanexistXh(Stringxh){ Listlist=getHibernateTemplate().find("fromDlbwherexh=? ",xh); if(list.size()>0) returntrue; else returnfalse; } publicDlbfind(Stringxh,Stringkl){ Stringstr[]={xh,kl}; Listlist=getHibernateTemplate().find("fromDlbwherexh=? andkl=? ",str); if(list.size()>0) return(Dlb)list.get(0); else returnnull; } publicvoidsave(Dlbuser){ getHibernateTemplate().save(user); } } XsDao.java: packageorg.dao; importjava.util.List; importorg.model.Xsb; publicinterfaceXsDao{ //插入学生 publicvoidsave(Xsbxs); //根据学号删除学生 publicvoiddelete(Stringxh); //修改学生信息 publicvoidupdate(Xsbxs); //根据学号查询学生信息 publicXsbfind(Stringxh); //分页显示学生信息 publicListfindAll(intpageNow,intpageSize); //查询一共多少条学生记录 publicintfindXsSize(); } XsDaoImpl.java: packageorg.dao.imp; importjava.util.List; importorg.dao.XsDao; importorg.hibernate.Query; importorg.hibernate.Session; importorg.hibernate.Transaction; importorg.model.Xsb; importorg.springframework.orm.hibernate3.support.HibernateDaoSupport; publicclassXsDaoImpextendsHibernateDaoSupportimplementsXsDao{ publicvoiddelete(Stringxh){ getHibernateTemplate().delete(find(xh)); } publicXsbfind(String
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验