javaEE实验报告6---Hibernate持久层编程

Java企业级开发(J2EE)实验报告

指导教师:王磊

 


 

第二篇:J2EE框架实验报告

  软件学院综合性实验报告

专业:JAVA   年级/班级: 09计算机2班    20##—20##学年第一学期

一、实验目的

熟练掌握接啊java编程思想和三大框架的应用,了解使用三大框架的开发流程和xml配置文件配置。

二、实验仪器或设备

计算机

三、总体设计(设计原理、设计方案及流程等)

创建一个Web项目,命名为“xscjManage”。该项目要实现学生、课程及成绩的增加、删除、修改、查找功能,需要三个表,即XSB表、KCB表、CJB表。其中XSB表中含有该学生所属专业的ID,且作为外键,故还应该有一个ZYB表。在登录学生成绩管理系统时,如果没有登录成功,就回到登录界面,登录成功后方可进行各种操作,用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(主要是DAO、业务逻辑和Struts的Action),而用Struts来完成页面的控制跳转。

四、实验步骤(包括主要步骤、代码分析等)

登录界面login.jsp的实现:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

<html>

<head>

    <title>学生成绩管理系统</title>

</head>

<body bgcolor="#D9DFAA">

       <table width="700" align="center">

    <tr>

       <td>

    <s:form action="login.action" method="post">

       <s:textfield name="dl.xh" label="学号" size="20"/>

       <s:password name="dl.kl" label="口令" size="21"/>

       <s:submit value="登录"/>

    </s:form>

    </td>

    </tr>

    </table>

</body>

</html>

登陆成功后返回页面oneXscj.jsp:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s" %>

<html>

<body bgcolor="#D9DFAA">

    <h3>该学生成绩如下:</h3>

    <hr width="700" align="left">

    <table border="1" cellspacing="1" cellpadding="8" width="700">

    <tr>

    <th>课程名</th><th>成绩</th><th>学分</th>

       </tr>

       <s:iterator value="#request.list" id="xscj">

       <tr>

           <td><s:property value="#xscj[2]"/> </td>

           <td><s:property value="#xscj[3]"/> </td>

           <td><s:property value="#xscj[4]"/> </td>

       </tr>

       </s:iterator>

       </table>

       <input type="button" value="返回" onClick="javaScript:history.back()"/>

</body>

</html>

如果失败,会跳转到noXscj.jsp页面:

<%@ page language="java" pageEncoding="UTF-8"%>

<html>

<body bgcolor="#D9DFAA">

       对不起,登陆失败!

</body>

</html>

操作成功后会跳转到成功界面success.jsp:

<%@ page language="java" pageEncoding="UTF-8"%>

<html>

<head>

</head>

<body bgcolor="#D9DFAA">

    恭喜你,操作成功!

</body>

</html>

添加Spring框架,用Hibernate建立与数据库的连接。

Dlb.java代码如下:

package org.model;

public class Dlb implements java.io.Serializable {

    private Integer id;     

    private String xh;         

    private String kl;         

    public Dlb() {}

    public Dlb(String xh, String kl) {

       this.xh = xh;

       this.kl = kl;

    }

    public Integer getId() {

       return this.id;

    }

    public void setId(Integer id) {

       this.id = id;

    }

    public String getXh() {

       return this.xh;

    }

    public void setXh(String xh) {

       this.xh = xh;

    }

    public String getKl() {

       return this.kl;

    }

    public void setKl(String kl) {

       this.kl = kl;

    }

}

Xsb.java代码如下:

package org.model;

import java.util.Date;

public class Xsb implements java.io.Serializable {

    private String xh;         

    private Zyb zyb;        

    private String xm;      

    private Byte xb;        

    private Date cssj;         

    private Integer zxf;    

    private String bz;         

    private byte[] zp;        

    public Xsb() {

    }

    public Xsb(Zyb zyb, String xm, Byte xb, Date cssj, Integer zxf, String bz,byte[] zp) {

       this.zyb = zyb;

       this.xm = xm;

       this.xb = xb;

       this.cssj = cssj;

       this.zxf = zxf;

       this.bz = bz;

       this.zp = zp;

    }

    }

Kcb.java代码如下:

package org.model;

public class Kcb implements java.io.Serializable {

    private String kch;     

    private String kcm;     

    private Short kxxq;     

    private Short xs;       

    private int xf;         

    public Kcb() {

    }

    public Kcb(String kcm, Short kxxq, Short xs, int xf) {

       this.kcm = kcm;

       this.kxxq = kxxq;

       this.xs = xs;

       this.xf = xf;

    }

    }

对应文件完成后,还要在Spring配置文件中注册,Spring配置文件application Context.xml。

登录类对应DAO层实现,DlDao.java接口:

package org.dao;

import java.util.List;

import org.model.Dlb;

public interface DlDao {

    public void save(Dlb user);

   

    public Dlb find(String xh,String kl);

    public boolean existXh(String xh);

}

学生类对应DAO层实现,XsDao.java接口:

package org.dao;

import java.util.List;

import org.model.Xsb;

public interface XsDao {

       public void save(Xsb xs);

       public void delete(String xh);

       public void update(Xsb xs);

       public Xsb find(String xh);

   

    public List findAll(int pageNow,int pageSize);

       public int findXsSize();

}

下面实现业务逻辑层及接口

DlService.java接口:

package org.service;

import org.model.Dlb;

public interface DlService {

       public void save(Dlb user);

       public Dlb find(String xh,String kl);

       public boolean existXh(String xh);

}

对应实现类DlServiceManage.java:

package org.service.imp;

import org.dao.DlDao;

import org.model.Dlb;

import org.service.DlService;

public class DlServiceManage implements DlService{

       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);

    }

}

XsService.java接口:

package org.service;

import java.util.List;

import org.model.Xsb;

public interface XsService {

       public void save(Xsb xs);

       public void delete(String xh);

       public void update(Xsb xs);

       public Xsb find(String xh);

       public List findAll(int pageNow,int pageSize);

       public int findXsSize();

}

ZyService.java接口:

package org.service;

import java.util.List;

import org.model.Zyb;

public interface ZyService {

    public void save(Zyb zy);

    public Zyb getOneZy(Integer zyId);

    public List getAll();

}

把业务逻辑交由Spring容器的Bean管理,在Spring配置文件中加入以下代码:

<bean id="dlService" class="org.service.imp.DlServiceManage">

    <property name="dlDao">

       <ref bean="dlDao"/>

    </property>

</bean>

<bean id="xsService" class="org.service.imp.XsServiceManage">

    <property name="xsDao">

       <ref bean="xsDao"/>

    </property>

    <property name="cjDao">

       <ref bean="cjDao"/>

    </property>

</bean>

<bean id="zyService" class="org.service.imp.ZyServiceManage">

    <property name="zyDao">

       <ref bean="zyDao"/>

    </property>

</bean>

<bean id="kcService" class="org.service.imp.KcServiceManage">

    <property name="kcDao">

       <ref bean="kcDao"/>

    </property>

</bean>

<bean id="cjService" class="org.service.imp.CjServiceManage">

    <property name="cjDao">

       <ref bean="cjDao"/>

    </property>

</bean>

在我们的操作中,必须要用到事务管理,所以这里要用到Spring的事务,在Spring配置文件中加入以下代码来对业务逻辑进行事务管理:

<bean id="transactionManager"

    class="org.springframework.orm.hibernate3.HibernateTransactionManager">

          <property name="sessionFactory">

              <ref local="sessionFactory"/>

           </property>

</bean>

<bean id="transactionInterceptor"

    class="org.springframework.transaction.interceptor.TransactionInterceptor"

       <property name="transactionManager" ref="transactionManager"/>

       <property name="transactionAttributes">

                  <props>

              <prop key="delete*">PROPAGATION_REQUIRED</prop>

              <prop key="*">PROPAGATION_REQUIRED</prop>

           </props>

       </property>

</bean>

    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"

        <property name="beanNames">

              <list>

           <value>xsService</value>

           <value>kcService</value>

             <value>cjService</value>

             <value>zyService</value>

           </list>

              </property>

           <property name="interceptorNames">

           <list>

              <value>transactionInterceptor</value>

                        </list>

    </property>

</bean>

web.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <welcome-file-list>

           <welcome-file>main.jsp</welcome-file>

    </welcome-file-list>

    <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/applicationContext.xml</param-value>

    </context-param>

</web-app>

还要配置Struts 2与Spring整合用到的struts.properties文件,其代码如下:

struts.objectFactory=spring

运行后出现如下效果:

五、结果分析与总结

数据经过三层,第一层:实体类层, 第二层:业务逻辑层 ,第三层:表示层(显示层),且层与层之间通过接口的调用实现数据的层间的传输,特别是接口和struts和spring的配置文件的应用实现了类与类之间的松耦合。

相关推荐