基于ssh架构的学生成绩管理系统Word文件下载.docx
《基于ssh架构的学生成绩管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于ssh架构的学生成绩管理系统Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
![基于ssh架构的学生成绩管理系统Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/e808aef0-4583-477f-b751-f383c744fc29/e808aef0-4583-477f-b751-f383c744fc291.gif)
xsb
刊名
福述|
数据类晏
可杳
默认值
说朗
XH
学号
Char(6)
X
无
主键
2,设计糸统架构
利用分层架构模式,设计糸统架构,糸统可分为表示层、业务逻辑层和教据持久层。
如下图所示:
日…龙)xscjMaiiag^
由…昌:
_hibernate3
[白・注src
国•加org.action
・・•
it]•org.dao
匡]…田org・4包o・imp
•••
审or£
-niodel
lie
Ia-JBorg.service
II•■
国…加org.service,imp
田••曲org.tool
=…圍struts.pfopc:
丫ties
5••…[X,struts,xml
•I
建立相应packageo
(])定义UserLibrary
(2)增加Spring开发能力(添加jar包使用UserLibrary,新建
applicationContext.xmD
注:
可以不增加U$erLibrary,直換把需要的jar包挎貝列classpath下。
4,卖现Hibernate久层
(1)添加Hibernate开发能力
添加jar包:
如黑第一步中己增加,此步可以省略。
注意:
需要把Hibernate由Spring来管理,其中包括亦Spring中配置<
<
dataSourcew和MsessionFactory°
(2)通过MyEclipse中Hibernate反向工程,分别生成表对应的
POJO类及相应的映射文件。
注盘:
所有的POJO类和映射文件f^.hbm.xmU放淮.org.model这个packageTo
堆点hxsbf学生表丿的腆射丈件中需要很置和专业的多对一关余,参考代码如下:
?
xmlversion="
1・0”encoding=Mutf-8H?
>
!
DOCTYPEhibernate-mappingPUBLICh-//Hibernate/HibernateMappingDTD3.0//EN”
"
hibernate.sourceforge.net/hibern8te・mdpping・3・0・dtd"
hibernate-mapping>
clas$n8me=9rg・model・Xsb”table=HX$BMschema=,,dboncatalog=uXSCJH>
idname=HxhMtype=Mjava.lang.String*^
columnname=hXHwlength=H6H/>
vgeneratorclas$=Massigned,,/>
/id>
propertyrwme="
xm"
type='
*java.Iang・String”>
columnname=MXMHlength=H50M/>
/property>
propertyname=,'
xb,'
type=,'
java.Ian&
Byte"
columnn8me=”XB"
/>
propertyname=nc$sjMtype=java.util.Date,,>
columnname=,tCSSJf1length=M23M/>
propertyname="
zxf'
type="
java.lang」ntegerh>
columnn8me=”ZXF"
propertyname=Hbzntype='
java」8ng・String"
columnname=HBZMlength="
500"
zpM>
columnn8me=”ZP”/>
many-to-onename-"
zybHdass-^org.model.Zyb"
fetch-"
select"
Iazy-"
false,t>
columnname-"
ZYJDh/>
/many-to-one>
/class>
/hibernate-mapping>
堆点2:
成绩表Ccjb丿中需要合主徴,因为成绩表中的主健是
由xh和kch组成,黒考代码如下:
xmlversion=,,1.0,'
encoding=Mutf-8"
v!
-
MappingfileautogeneratedbyMyEclipsePersistenceTools
->
clas$name=Morg.model.CjbMtable=,,CJBMschema=HdboHcatalog=,,XSCJ'
>
<
•・复金主皱配其中两个key-property.分别对应两个主皱・・>
composite-idndass=worg.model.CjbldH>
key-propertyname-wxh"
type-"
java.lang.String*1〉
columnname-^XH"
length-w6R/>
Aey-property>
key-propertyname-wkchwtype-f,java.lang.$tring"
KCHwlength-"
4w/>
Aey-property>
/composite-id>
cjMtype=Hjava.lang」ntegerM>
columnname='
*CJM/>
propertyname="
xftype=,,java」ang」ntegerM>
columnn8me=”XF"
/property>
/clas$>
对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:
Cjbld.java
packageorg.model;
publicclassCjbldimplementsjava.io.Serializable{
privateStringxh:
privateStringkch:
publicCjbld0{
}
publicCjbld(Stringxh.Stringkch){
this.xh=xh;
this,kch=kch:
publicStringgetXhQ{
returnthis.xh;
publicvoidsetXh(Stringxh){this.xh=xh;
publicStringgetKchO{returnthis.kch:
publicvoidsetKch(Stringkch){this.kch=kch;
Cjb.java
publicclassCjbimplemejava.io.Serializable{privateCjbldid:
privateIntegercj;
privateIntegerxf:
publicCjbO(
publicCjb(Cjbldid){thls.id=id;
publicCjb(Cjbldid.Integercj.Integerxf){this.id=id;
this.cj=cj;
this.xf=xf:
publicCjbldgetldO{returnthis.id:
publicvoidsetld(Cjbldid){this.id=id;
publicIntegergetCjO{
returnthis.cj:
publicvoidsetCj(lntegercj){this.cj=cj;
publicIntegergetXfO{
returnthis.xf:
publicvoid$etXf(lntegerxf){
this.xf=xf:
iA:
所有的畝射丈件席要农Spring紀JL丈件中注册,参考
applicationContext>
xml如下:
beanid="
datasource"
class=Mmons.dbcp.BasicDataSourceM>
-岌义数据库驱动-->
propertyname=ndriverClassNamenvalue=,,.mysql.jdbc.Driver,,>
・・岌义致据库URL->
propertyname=nurrvalue=t,jdbc:
mysql:
//localhost:
3306/xscj,,>
-岌义的用户名
propertyname=,,usernameMvaIue=nrootM>
・・岌义数摒库密码-->
propertyname=npasswordnvalue=nroof>
/bean>
-主义Hibernate的SessionFactory->
vbeanid=^sessionFactory11
class=Horg.springframework.orm.hibernate3.Local$essionFactoryBeanM>
-龙义SessionFactory必须注入DataSource->
propertyname=,fdataSourceM>
refbean="
datasource”/>
-龙义Hibernate的SessionFactory為性・•>
propertyname=nhibernatePropertiesn>
props>
propkey=,,hibernate.dialectn>
org.hibernate.dialect.MySQLDialect
/prop>
/props>
-岌义POJO的映射丈件一〉
propertyname=,,mappingResources,,>
list>
value>
org/model/Dlb.hbm.xml<
/value>
vaIue>
org/model/Xsb.hbm.xml<
org/model/Kcb.hbm.xml<
org/model/Zyb.hbm.xml<
/vaIue>
value>
org/mode!
/Cjb.hbm.xml<
/value>
5,卖现DAO
所有DAO层的卖现类需要继承HibernateDaoSupport类,参考代码如下:
packageorg.dao.imp;
importjava.util.List;
importorg.dao.DIDao;
importorg.model.Dlb;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassDIDaoImpextendsHibernateDaoSupportimplementsDIDao{
publicbooleanexistXh(Stringxh){
Listlist=getHibernateTempIateO»
findf,fromDlbwherexh=?
\xh);
if(list.sizeO>
0)
returntrue;
else
returnfalse:
publicDlbfind(Stringxh.Stringkl){
Stringstr[]={xh,kl);
ListIist=getHibernateTempIate0.findf7romDlbwherexh=?
andkl=?
\str);
if(listsizeO>
return(Dlb)Iist.get(0);
returnnull;
publicvoidsave(Dlbuser){
getHibernateTempIateO.save(user):
注裔:
所有DAO层的卖现类都需要在Spring配置,并且必须获得一个SessionFactory的引用,然后才能完成持久化访问。
换句话说,DAO的实现类都交由Spring彖薜的Bean来管理。
参考Spring中的
配置DAO的部分代码如下"
beanid=,,dlDaoMclass=Horg.dao.imp.DIDaolmp°
se$sionFactoryn>
refbean=nse$sionFactoryM/>
beanid=,,xsDao,'
class=Horg.dao.imp.X$DaolmpM>
$essionFactory”〉
refbean="
se$sionFsctory"
/〉<
/bean>
kcDao"
clas$=Horg.dao.imp.KcDaolmpM>
propertyname=Hse$sionFactoryM>
refbean=HsessionFactoryV>
beanid=”zyD8o"
cla$s=Hor&
d8O・imp.ZyDdolmp"
se$sionFactoryH>
sessionFactoryV>
cjDao”cla$$=Horg.dao.imp.CjDaolmpM>
sessionFactory"
〉
refbean=n$e$sionFactory*7>
6、实现业务逻辑层(Service层丿
主要卖现对DAO层的调用。
堆点依赖注入
依赖注入if•先要亦需要注入的类中步朗一个变量(对象丿,同时生成该变量(对象丿的setter方法。
其次需要在Spring配置文件中设置需要注入的对象。
例如,需要亦螯录的DIServiceManage类中注入DIDaoImp卖例
化后的对象,步骤有二:
首先,在DIServiceManage中步明diDao,同肘生成diDao的setter方法,参考代码如下:
packageorg.service.imp;
importorg.dao.DIDao:
importorg.service.DIService;
publicclassDIServiceManageimplementsDIService{
〃对DIDao进行依赖di入
privateDIDaodiDao;
publicvoidsetDIDao(DIDaodiDao){
this.dIDao=diDao;
returndlDao.existXh(xh):
returndlDao.find(xh.kl);
diDao.save(user);
其次,A.Spring的紀置文件中进行配置:
beanid="
diService"
class='
org.service.imp.DIServiceManag3>
propertyname=HdlDaon>
refbean=HdlDao7>
7.对业务逻辑增加事务管理
采用BeanNameAutoProxyCreator,根据BeanName自动生成
事务代理的方式。
参考代码:
beanid=Mtran$actionManager"
clas$=Horg.springframework.orm.hibern8te3・Hibern8teTr8nsactionMansger”>
-HibernateTransactionManagerbean需妥依赖垃入一个SessionFactorybean的
引用“〉
propertyname=,'
$essionFactoryH>
reflocal=HsessionFactoryM/>
・・犯置.孝务捏就霉“〉
beanid=,,transsctionlnterceptor”
clas$=Horg.springframework.transaction.interceptor.Transactionlnterceptor'
^
—丰务拦禰赛bean需要依籍垃入一个字务管理春->
propertyname=HtransactionManager"
ref="
transactionManager”/>
transactionAttributes”〉
・・下面麦义孝务传林禺性-〉
prop$>
propkey=ndeleteAU>
PROPAGATION_REQUIRED<
propkey=>
PROPAGATIONREQUIRED<
/prop>
-丸义BeanNameAutoProxyCreator.该besn无需枚引用,因此没有id禺性.迂个bean根据孝务栏範各为nfebeanfj动创雄手务代理一〉
bean
clas$=,'
org.$pringframework.aop.framework,butoproxy.BeanNsmeAutoProxyCrestor"
••指丸对满足哪些beanname的beanlj动生成业务代理->
propertyname=HbeanName$M>
v!
•・下面是所冇需宴勺动创建李务代理的bean->
li$t>
xsService<
kcService<
cjService<
zyService<
/list>
-此处可增加其他需妄自动创建李务代理的bean->
-下面丸义BeanNameAutoProxyCreator所需的李务捏就孚・・>
propertyname=uinterceptorNamesM>
vaIue>
transactionlnterceptorv/value〉
-此处可埴加其他折的Interceptor->
8.卖现表示层CAction类和JSP丈件丿
(1J配置web.xmL增加Struts2的过德赛和Spring的监听器,参
考代码如下:
filter>
filter-name>
strut$2<
/filter-name>
fiIter-class>
org.apache.struts2.dispatcher.FilterDi$patcher
/filter-cla$s>
/filter>
f