基于ssh架构的学生成绩管理系统.doc
《基于ssh架构的学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《基于ssh架构的学生成绩管理系统.doc(16页珍藏版)》请在咨信网上搜索。
。 基于ssh架构的学生成绩管理系统 (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 掌握Struts2的开发步骤 掌握Hibernate的开发步骤 掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等 掌握Struts2、Spring和Hibernate框架的整合 掌握分页技术 1、 建库建表 2、 利用分层思想,建package 3、 添加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的整合文件struts.properties。 (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 专业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开发能力 (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> <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" " <!-- 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.java package 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.java package 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="datasource" class="mons.dbcp.BasicDataSource"> <!-- 定义数据库驱动 --> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <!-- 定义数据库URL --> <property name="url" value="jdbc:mysql://localhost:3306/xscj"> </property> <!-- 定义数据库的用户名 --> <property name="username" value="root"></property> <!-- 定义数据库密码 --> <property name="password" value="root"></property> </bean> <!-- 定义Hibernate的SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--定义SessionFactory必须注入DataSource--> <property name="dataSource"> <ref bean="datasource" /> </property> <!--定义Hibernate的SessionFactory属性--> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> <!-- 定义POJO的映射文件 --> <property name="mappingResources"> <list> <value>org/model/Dlb.hbm.xml</value> <value>org/model/Xsb.hbm.xml</value> <value>org/model/Kcb.hbm.xml</value> <value>org/model/Zyb.hbm.xml</value> <value>org/model/Cjb.hbm.xml</value> </list> </property> </bean> …… 5、 实现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 DlDao{ public 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); else return null; } public void save(Dlb user) { getHibernateTemplate().save(user); } } 注意:所有DAO层的实现类都需要在Spring配置,并且必须获得一个SessionFactory的引用,然后才能完成持久化访问。换句话说,DAO的实现类都交由Spring容器的Bean来管理。参考Spring中的配置DAO的部分代码如下“ <bean id="dlDao" class="org.dao.imp.DlDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <bean id="xsDao" class="org.dao.imp.XsDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="kcDao" class="org.dao.imp.KcDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="zyDao" class="org.dao.imp.ZyDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean id="cjDao" class="org.dao.imp.CjDaoImp"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> 6、 实现业务逻辑层(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.DlServiceManage"> <property name="dlDao"> <ref bean="dlDao"/> </property> </bean> 7、 对业务逻辑增加事务管理 采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。参考代码: <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <!-- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用--> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!-- 配置事务拦截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <!-- 下面定义事务传播属性--> <props> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 定义BeanNameAutoProxyCreator,该bean无需被引用,因此没有id属性,这个bean根据事务拦截器为目标bean自动创建事务代理--> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!-- 指定对满足哪些bean name的bean自动生成业务代理 --> <property name="beanNames"> <!-- 下面是所有需要自动创建事务代理的bean--> <list> <value>xsService</value> <value>kcService</value> <value>cjService</value> <value>zyService</value> </list> <!-- 此处可增加其他需要自动创建事务代理的bean--> </property> <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> <!-- 此处可增加其他新的Interceptor --> </list> </property> </bean> 8、 实现表示层(Action类和JSP文件) (1) 配置web.xml,增加Struts2的过滤器和Spring的监听器,参考代码如下: <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> (2) 增加struts.properties文件,配置Struts2的Action交由Spring来管理,参考代码如下: struts.objectFactory=spring (3) 新建JSP页面和Action类,并在struts.xml和applicationContext.xml中配置。 以登录为例: Action类参考代码: package org.action; import java.util.Map; import org.model.Dlb; import org.service.DlService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class DlAction extends ActionSupport{ private DlService dlService; private Dlb dl; public Dlb getDl() { return dl; } public void setDl(Dlb dl) { this.dl = dl; } public DlService getDlService() { return dlService; } public void setDlService(DlService dlService) { this.dlService = dlService; } public String execute()throws Exception{ Dlb user=dlService.find(dl.getXh(), dl.getKl()); if(user!=null){ Map session=(Map)ActionContext.getContext().getSession(); session.put("user", user); return SUCCESS; }else return ERROR; } } struts.xml参考配置: <action name="login" class="dlAction"> <result name="success">/login_success.jsp</result> <result name="error">/login.jsp</result> <result name="input">/login.jsp</result> </action> applicationContext.xml参考配置: <bean id="dlAction" class="org.action.DlAction"> <property name="dlService"> <ref bean="dlService" /> </property> </bean> 9、 部署运行 【Gjava人才】www.G java人才学习天堂 THANKS !!! 致力为企业和个人提供合同协议,策划案计划书,学习课件等等 打造全网一站式需求 欢迎您的下载,资料仅供参考 -可编辑修改-- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ssh 架构 学生 成绩管理系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文