当前位置:文档之家› 基于ssh架构的学生成绩管理系统

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

基于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的整合文件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登录表:dlb专业表:zyb课程表:kcb连接表:xs_kcb成绩表:cjb2、设计系统架构利用分层架构模式,设计系统架构,系统可分为表示层、业务逻辑层和数据持久层。

如下图所示:建立相应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.dtd"><hibernate-mapping><class name="org.model.Xsb" table="XSB" schema="dbo" catalog="XSCJ"> <id name="xh" type="ng.String"><column name="XH" length="6" /><generator class="assigned" /></id><property name="xm" type="ng.String"><column name="XM" length="50" /></property><property name="xb" type="ng.Byte"><column name="XB" /></property><property name="cssj" type="java.util.Date"><column name="CSSJ" length="23" /></property><property name="zxf" type="ng.Integer"><column name="ZXF" /></property><property name="bz" type="ng.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>难点2:成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:CjbId.javaCjb.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;重点:所有的映射文件需要在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>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;elsereturn 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的引用,然后才能完成持久化访问。

相关主题