SSH整合实例学生成绩管理系统Word格式.docx
《SSH整合实例学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《SSH整合实例学生成绩管理系统Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
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、部署运行
实验步骤:
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
总学分
BZ
备注
Varchar(200)
ZP
照片
mediumblob
登录表:
dlb
id
标识
自增1
主键,自增
xh
登录号
char(6)
外键,xsb中xh
kl
口令
char(20)
专业表:
zyb
ID
zym
专业名
char(12)
rs
人数
fdy
辅导员
char(8)
课程表:
kcb
kch
课程号
Char(3)
否
kcm
课程名
Char(12)
是
kxxq
开课学期
smallint
1-8
xs
学时
xf
学分
连接表:
xs_kcb
char(3)
成绩表:
cjb
Xh
Kch
Cj
成绩
2、设计系统架构
利用分层架构模式,设计系统架构,系统可分为表示层、业务逻辑层和数据持久层。
如下图所示:
建立相应package。
(1)定义UserLibrary
(2)增加Spring开发能力(添加jar包——使用UserLibrary,新建applicationContext.xml)
注:
可以不增加UserLibrary,直接把需要的jar包拷贝到classpath下。
4、实现Hibernate持久层
(1)添加Hibernate开发能力
添加jar包:
如果第一步中已增加,此步可以省略。
注意:
需要把Hibernate交由Spring来管理,其中包括在Spring中配置“dataSource”和“sessionFactory”
(2)通过MyEclipse中Hibernate反向工程,分别生成表对应的POJO类及相应的映射文件。
所有的POJO类和映射文件(*.hbm.xml)放在org.model这个package下。
难点1:
xsb(学生表)的映射文件中需要设置和专业的多对一关系,参考代码如下:
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
!
DOCTYPEhibernate-mappingPUBLIC"
-//Hibernate/HibernateMappingDTD3.0//EN"
"
hibernate-mapping>
<
classname="
org.model.Xsb"
table="
XSB"
schema="
dbo"
catalog="
XSCJ"
idname="
xh"
type="
java.lang.String"
columnname="
XH"
length="
6"
/>
generatorclass="
assigned"
/id>
propertyname="
xm"
XM"
50"
/property>
xb"
java.lang.Byte"
XB"
cssj"
java.util.Date"
CSSJ"
23"
zxf"
java.lang.Integer"
ZXF"
bz"
BZ"
500"
zp"
ZP"
many-to-onename="
zyb"
class="
org.model.Zyb"
fetch="
select"
lazy="
false"
ZY_ID"
/many-to-one>
/class>
/hibernate-mapping>
难点2:
成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:
--
MappingbyMyEclipsePersistenceTools
-->
org.model.Cjb"
CJB"
--复合主键配置其中两个key-property,分别对应两个主键-->
composite-idname="
id"
org.model.CjbId"
key-propertyname="
/key-property>
kch"
KCH"
4"
/composite-id>
cj"
CJ"
xf"
XF"
对应的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){
publicStringgetKch(){
returnthis.kch;
publicvoidsetKch(Stringkch){
}
Cjb.java
publicclassCjbimplementsjava.io.Serializable{
privateCjbIdid;
privateIntegercj;
privateIntegerxf;
publicCjb(){
publicCjb