




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ssh架构的学生成绩管理系统(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层实现类的定义,并需要依赖注入一个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的整合文件perties。(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专业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人数int0fdy辅导员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) 定义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/hibernate-mapping-3.0.dtdhibernate-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 property name=zp column name=ZP / /property many-to-one name=zyb class=org.model.Zyb fetch=select lazy=false column name=ZY_ID / /many-to-one /class/hibernate-mapping难点2:成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:?xml version=1.0 encoding=utf-8?!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN/hibernate-mapping-3.0.dtd!- Mapping file autogenerated by MyEclipse Persistence Tools-hibernate-mapping class name=org.model.Cjb table=CJB schema=dbo catalog=XSCJ !- 复合主键配置 其中两个key-property,分别对应两个主键- composite-id name=id class=org.model.CjbId key-property name=xh type=java.lang.String column name=XH length=6 / /key-property key-property name=kch type=java.lang.String column name=KCH length=4 / /key-property /composite-id property name=cj type=java.lang.Integer column name=CJ / /property property name=xf type=java.lang.Integer column name=XF / /property /class/hibernate-mapping对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:CjbId.javapackage org.model;public class CjbId implements java.io.Serializable private String xh;private String kch;public CjbId() public CjbId(String xh, String kch) this.xh = xh;this.kch = kch;public String getXh() return this.xh;public void setXh(String xh) this.xh = xh;public String getKch() return this.kch;public void setKch(String kch) this.kch = kch;Cjb.javapackage org.model;public class Cjb implements java.io.Serializable private CjbId id;private Integer cj;private Integer xf;public Cjb() public Cjb(CjbId id) this.id = id;public Cjb(CjbId id, Integer cj, Integer xf) this.id = id;this.cj = cj;this.xf = xf;public CjbId getId() return this.id;public void setId(CjbId id) this.id = id;public Integer getCj() return this.cj;public void setCj(Integer cj) this.cj = cj;public Integer getXf() return this.xf;public void setXf(Integer xf) this.xf = xf;重点:所有的映射文件需要在Spring配置文件中注册,参考applicationContext.xml如下:bean id=datasourceclass=mons.dbcp.BasicDataSource!- 定义数据库驱动 -property name=driverClassNamevalue=com.mysql.jdbc.Driver/property!- 定义数据库URL -property name=urlvalue=jdbc:mysql:/localhost:3306/xscj/property!- 定义数据库的用户名 -property name=username value=root/property!- 定义数据库密码 -property name=password value=root/property/bean!- 定义Hibernate的SessionFactory -bean id=sessionFactoryclass=org.springframework.orm.hibernate3.LocalSessionFactoryBean!-定义SessionFactory必须注入DataSource-property name=dataSourceref bean=datasource /property!-定义Hibernate的SessionFactory属性-property name=hibernatePropertiespropsprop key=hibernate.dialectorg.hibernate.dialect.MySQLDialect/prop/props/property!- 定义POJO的映射文件 -property name=mappingResourceslist valueorg/model/Dlb.hbm.xml/valuevalueorg/model/Xsb.hbm.xml/valuevalueorg/model/Kcb.hbm.xml/valuevalueorg/model/Zyb.hbm.xml/valuevalueorg/model/Cjb.hbm.xml/value/list/property/bean5、 实现DAO所有DAO层的实现类需要继承HibernateDaoSupport类,参考代码如下:package org.dao.imp;import java.util.List;import org.dao.DlDao;import org.model.Dlb;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class DlDaoImp extends HibernateDaoSupport implements DlDaopublic boolean existXh(String xh) List list=getHibernateTemplate().find(from Dlb where xh=?,xh);if(list.size()0)return true;else return false;public Dlb find(String xh, String kl) String str=xh,kl;List list=getHibernateTemplate().find(from Dlb where xh=? and kl=?,str);if(list.size()0)return (Dlb) list.get(0);elsereturn null;public void save(Dlb user) getHibernateTemplate().save(user);注意:所有DAO层的实现类都需要在Spring配置,并且必须获得一个SessionFactory的引用,然后才能完成持久化访问。换句话说,DAO的实现类都交由Spring容器的Bean来管理。参考Spring中的配置DAO的部分代码如下“bean id=dlDao class=org.dao.imp.DlDaoImpproperty name=sessionFactoryref bean=sessionFactory /property/beanbean id=xsDao class=org.dao.imp.XsDaoImpproperty name=sessionFactoryref bean=sessionFactory/property/beanbean id=kcDao class=org.dao.imp.KcDaoImpproperty name=sessionFactoryref bean=sessionFactory/property/beanbean id=zyDao class=org.dao.imp.ZyDaoImpproperty name=sessionFactoryref bean=sessionFactory/property/beanbean id=cjDao class=org.dao.imp.CjDaoImpproperty name=sessionFactoryref bean=sessionFactory/property/bean6、 实现业务逻辑层(Service层)主要实现对DAO层的调用。难点1:依赖注入依赖注入首先要在需要注入的类中声明一个变量(对象),同时生成该变量(对象)的setter方法。其次需要在Spring配置文件中设置需要注入的对象。例如,需要在登录的DlServiceManage类中注入DlDaoImp实例化后的对象,步骤有二:首先,在DlServiceManage中声明dlDao,同时生成dlDao的setter方法,参考代码如下:package org.service.imp;import org.dao.DlDao;import org.model.Dlb;import org.service.DlService;public class DlServiceManage implements DlService/对DlDao进行依赖注入private DlDao dlDao;public void setDlDao(DlDao dlDao) this.dlDao = dlDao;public boolean existXh(String xh) return dlDao.existXh(xh);public Dlb find(String xh, String kl) return dlDao.find(xh, kl);public void save(Dlb user) dlDao.save(user);其次,在Spring的配置文件中进行配置:bean id=dlService class=org.service.imp.DlServiceManageproperty name=dlDaoref bean=dlDao/property/bean7、 对业务逻辑增加事务管理采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。参考代码:bean id=transactionManagerclass=org.springframework.orm.hibernate3.HibernateTransactionManager!- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用-property name=sessionFactoryref local=sessionFactory /property/bean!- 配置事务拦截器-bean id=transactionInterceptorclass=erceptor.TransactionInterceptor!- 事务拦截器bean需要依赖注入一个事务管理器 -property name=transactionManager ref=transactionManager /property name=transactionAttributes!- 下面定义事务传播属性-propsprop key=delete*PROPAGATION_REQUIRED/propprop key=*PROPAGATION_REQUIRED/prop/props/property/bean!- 定义BeanNameAutoProxyCreator,该bean无需被引用,因此没有id属性,这个bean根据事务拦截器为目标bean自动创建事务代理-beanclass=org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator!- 指定对满足哪些bean name的bean自动生成业务代理 -property name=beanNames!- 下面是所有需要自动创建事务代理的bean-listvaluexsService/valuevaluekcService/valuevaluecjService/valuevaluezyService/value/list!- 此处可增加其他需要自动创建事务代理的bean-/property!- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-property name=interceptorNameslistvaluetransactionInterceptor/value!- 此处可增加其他新的Interceptor -/list/property/bean8、 实现表示层(Action类和JSP文件)(1) 配置web.xml,增加Struts2的过滤器和Spring的监听器,参考代码如下: filter filter-namestruts2/filter-name filter-class org.apache.struts2.dispatcher.FilterDispatcher /filter-class /filter filter-mapping filter-namestruts2/filter-name url-pattern/*/url-pattern /filter-mapping listener listener-class org.springframework.web.context.ContextLoaderListener /listener-class /listener context-param param-namecontextConfigLocation/param-name param-value/WEB-INF/classes/applicationContext.xml/param-value /context-param(2) 增加perties文件,配置Struts2的Action交由Spring来管理,参考代码如下:struts.objectFactory=spring(3) 新建JSP页面和Action类,并在struts.xml和applicationContext.xml中配
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成品品种分类培训
- 智能小车启蒙课件
- 课件模板护眼
- 住陪师资培训
- 课件样片拍摄
- 新进教师培训心得
- 教师招聘之《小学教师招聘》题库检测试题打印附答案详解【突破训练】
- 考眼力考试题及答案
- 矿井电气防爆检查工专业技能考核试卷及答案
- 混合气生产工工艺考核试卷及答案
- 房屋学位租赁合同协议书
- 环保行业风险管理办法
- 2025年高速公路标杆企业组织效能报告
- 政府装监控合同范本
- 代运营品牌合作合同范本
- 拆除工程环境保护方案及措施
- 重症凝血病标准化评估中国专家共识(2025版)
- 2025年度麻精药品抗菌药物抗肿瘤药物培训考核试题(含答案)
- 新交际英语(2024)二年级上册全册核心素养教案
- 同济大学《通信原理》2024-2025学年第一学期期末试卷
- 物流业务员培训课件
评论
0/150
提交评论