Struts2-Spring与Hibernate整合应用-学生成绩管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验四:Struts2、Spring与Hibernate整合应用————学生成绩管理系统实验要求:(1)整合Struts2、Spring和Hibernate框架(2)实现“登录”功能(3)实现“学生信息管理”功能(4)实现“学生成绩管理”功能(5)实现分页功能实验目的:掌握Struts2的开发步骤掌握Hibernate的开发步骤掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等掌握Struts2、Spring和Hibernate框架的整合掌握分页技术实验思路:1、建库建表2、利用分层思想,建package3、添加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、部署运行实验步骤:^_^------1、建库、建表建立数据库xscj,建立xsb、dlb、zyb、kcb、cjb等。学生信息表:xsb列名描述数据类型可空默认值说明XH学号Char(6)×无主键XM姓名Char(8)×无XB性别bit×无1:男,0:女CSSJ出生时间datetime√无ZY_ID专业IDint×无ZXF总学分int√无BZ备注Varchar(200)√无ZP照片mediumblob√无登录表:dlb列名描述数据类型可空默认值说明id标识int×自增1主键,自增xh登录号char(6)×无外键,xsb中xhkl口令char(20)×无专业表:zyb列名描述数据类型可空默认值说明idIDint×自增1主键zym专业名char(12)×无rs人数int√0fdy辅导员char(8)√无课程表:kcb列名描述数据类型可空默认值说明kch课程号Char(3)否无主键kcm课程名Char(12)是无kxxq开课学期smallint是无1-8xs学时int是0xf学分int是0连接表:xs_kcb列名描述数据类型可空默认值说明xh学号char(6)主键kch课程号char(3)主键成绩表:cjb^_^------列名描述数据类型可空默认值说明Xh学号Char(6)否无主键Kch课程号Char(3)否无主键Cj成绩int是0xf学分int是02、设计系统架构利用分层架构模式,设计系统架构,系统可分为表示层、业务逻辑层和数据持久层。如下图所示:建立相应package。3、添加Spring开发能力(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.0encoding=utf-8?!DOCTYPEhibernate-mappingPUBLIC-//Hibernate/HibernateMappingDTD3.0//EN=org.model.Xsbtable=XSBschema=dbocatalog=XSCJidname=xhtype=java.lang.Stringcolumnname=XHlength=6/generatorclass=assigned//idpropertyname=xmtype=java.lang.Stringcolumnname=XMlength=50//propertypropertyname=xbtype=java.lang.Bytecolumnname=XB//propertypropertyname=cssjtype=java.util.Datecolumnname=CSSJlength=23//propertypropertyname=zxftype=java.lang.Integercolumnname=ZXF//propertypropertyname=bztype=java.lang.Stringcolumnname=BZlength=500//property^_^------propertyname=zpcolumnname=ZP//propertymany-to-onename=zybclass=org.model.Zybfetch=selectlazy=falsecolumnname=ZY_ID//many-to-one/class/hibernate-mapping难点2:成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:?xmlversion=1.0encoding=utf-8?!DOCTYPEhibernate-mappingPUBLIC-//Hibernate/HibernateMappingDTD3.0//EN!--MappingfileautogeneratedbyMyEclipsePersistenceTools--hibernate-mappingclassname=org.model.Cjbtable=CJBschema=dbocatalog=XSCJ!--复合主键配置其中两个key-property,分别对应两个主键--composite-idname=idclass=org.model.CjbIdkey-propertyname=xhtype=java.lang.Stringcolumnname=XHlength=6//key-propertykey-propertyname=kchtype=java.lang.Stringcolumnname=KCHlength=4//key-property/composite-idpropertyname=cjtype=java.lang.Integercolumnname=CJ//propertypropertyname=xftype=java.lang.Integercolumnname=XF//property/class/hibernate-mapping对应的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.javapackageorg.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;}}重点:所有的映射文件需要在Spring配置文件中注册,参考applicationContext.xml如下:……beanid=datasourceclass=org.apache.commons.dbcp.BasicDataSource!--定义数据库驱动--propertyname=driverClassNamevalue=com.mysql.jdbc.Driver/property!--定义数据库URL--propertyname=urlvalue=jdbc:mysql://localhost:3306/xscj/property!--定义数据库的用户名--propertyname=usernamevalue=root/property!--定义数据库密码--propertyname=passwordvalue=root/property/bean!--定义Hibernate的SessionFactory--beanid=sessionFactoryclass=org.springframework.orm.hibernate3.LocalSessionFactoryBean!--定义SessionFactory必须注入DataSource--propertyname=dataSourcerefbean=datasource//prop

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功