收藏 分销(赏)

基于ssh架构的学生成绩管理系统.doc

上传人:天**** 文档编号:2405414 上传时间:2024-05-29 格式:DOC 页数:16 大小:121.50KB 下载积分:8 金币
下载 相关 举报
基于ssh架构的学生成绩管理系统.doc_第1页
第1页 / 共16页
基于ssh架构的学生成绩管理系统.doc_第2页
第2页 / 共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 !!! 致力为企业和个人提供合同协议,策划案计划书,学习课件等等 打造全网一站式需求 欢迎您的下载,资料仅供参考 -可编辑修改-
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服