目录

  • 1 任务一 Eclipse概述及安装
    • 1.1 认识Eclipse
    • 1.2 安装Eclipse
    • 1.3 安装Eclipse插件
    • 1.4 实训
  • 2 任务二 Eclipse的集成开发环境
    • 2.1 Eclipse界面
    • 2.2 常用视图
    • 2.3 透视图
    • 2.4 Java程序编写
    • 2.5 编译和运行
    • 2.6 Java代码调试
    • 2.7 实训
  • 3 任务三 Eclipse中搭建Web开发环境
    • 3.1 Eclipse中Web开发环境的分析
    • 3.2 应用服务器Tomcat的安装与配置
    • 3.3 MyEclipse插件的安装与配置
    • 3.4 数据库的安装与配置
    • 3.5 实训
  • 4 任务四 Eclipse中开发Web项目
    • 4.1 Eclipse中创建Web工程
    • 4.2 建立Servlet处理方式
    • 4.3 建立JavaBean处理方式
    • 4.4 数据库开发
    • 4.5 Eclipse中调试Web项目
    • 4.6 实训
  • 5 任务五 Eclipse开发实例——电子会议厅
    • 5.1 MVC设计模式
    • 5.2 系统分析
    • 5.3 数据库设计
    • 5.4 框架结构设计
    • 5.5 功能设计与实现
      • 5.5.1 动态加载事务类别
      • 5.5.2 添加事务(一)
      • 5.5.3 添加事务(二)
      • 5.5.4 班级事务的编辑与删除
      • 5.5.5 班级事务的查看
    • 5.6 实训
  • 6 任务六   Struts实现MVC设计
    • 6.1 实例介绍
    • 6.2 Struts框架结构
    • 6.3 Struts实例设计
    • 6.4 利用Struts实现“班级事务发布”模块
    • 6.5 实训
  • 7 任务七  Hibernate实现数据持久化
    • 7.1 持久化技术
    • 7.2 Eclipse中开发Hibernate
    • 7.3 Hibernate项目的设计
    • 7.4 利用Hibernate实现“班级事务浏览”模块
    • 7.5 项目的打包与发行
    • 7.6 实训
  • 8 任务八   JUnit单元测试
    • 8.1 关于JUnit
    • 8.2 编写和运行JUnit测试
    • 8.3 JUnit测试案例
    • 8.4 实训
  • 9 任务九  使用CVS进行版本控制
    • 9.1 版本管理与CVS
    • 9.2 CVS服务器的安装与配置
    • 9.3 CVS客户端的配置
    • 9.4 CVS项目管理
    • 9.5 标记版本
    • 9.6 实训
利用Hibernate实现“班级事务浏览”模块


利用Hibernate实现班级事务浏览模块


一、准备项目结构

事务浏览的执行过程

模块的实现思路及设计要素 

 

对设计思路的说明

① 保留原有的视图:将4个视图文件及top.jsp、main.jsp文件都复制到项目中的WebRoot目录下。


② 根据处理逻辑,设计分为三个阶段进行。


第一阶段:index.jsp视图发出一个请求,要求得到所有的分类信息。


第二阶段:通过用户选择,left.jsp视图发出一个请求,要求得到某个类别下的所有班级事务列表。


第三阶段:通过用户选择,affairs_list_view.jsp视图发出一个请求,要求得到某条班级事务的具体细节。


③ 每个阶段都要设计Struts要素和Hibernate要素,所以建立了Web项目后要添加Struts支持和Hibernate支持。

准备项目 

工作细节:

u 仅添加了Struts支持,组件部分留在设计中实施。

u 添加了Hibernate支持,针对三个数据库表分别创建了映射文件。

u 对项目结构做了调整,将公共部分放在了hibernate包中。

u 创建了DAO类的接口文件,如:IAffairDAO.java(此时文件内容为空,方法的定义留到设计中完成)。

u 建立了DAO工厂,用于得到三个DAO类对象。


做细节上的工作

u让DAO类实现已经定义了的各自的接口;

u在DAO工厂类中编写三个方法,用于得到三个DAO类对象。

通过这些设计,Hibernate_Meeting项目不仅有了Struts和Hibernate的支持,而且形成了DAO层的完整结构,设计中只需设计控制层和业务层即可。 

二、第一个阶段的设计

*Struts部分的设计

修改index.jsp文件的代码。

将文件中的src="left.jsp"改成src="getsort.do",即向Servlet发出一个请求。 

创建Action及ActionForward组件











工作结束后,查看struts-config.xml文件 

 ⑶ 修改left.jsp文件的代码。

<%  Sort sort = new Sort();

  List<Sort>list = (ArrayList<Sort>) request.getAttribute("sortList");

%>

………

<td height="100">班级事务浏览

 <%    intnum = list.size();

   for (inti = 0; i < num; i++) {

   sort = (Sort) list.get(i);

 %>

 <a href="XXXX?sortId=<%=String.valueOf(sort.getSortId())%>" target="mainFrame"><%=sort.getName()%></a></p>

 <% } %>

</td>

Hibernate部分的设计

 ⑴ 编写ISortDAO接口方法

   这个阶段要从sort表中取出所有的分类信息,要通过DAO类提供的findAll()方法实现,所以在对应的接口类中要定义这个方法。

   在ISortDAO.java中定义抽象方法:

   public List<Sort> findAll();

   这样就可以在业务层通过dao对象调用该方法了。 


建立并完善service层业务

   在src目录下建立一个名为service的包,并创建针对SortDAO的业务层类SortService.java。在Action组件中设定了获取分类信息的业务层方法是getSortList(),所以接下来编写这个方法并调用DAO类中的findAll()方法,完成对数据库表sort所有信息的获取。

SortService.java文件中getSortList()方法的代码如下:














*阶段测试

部署项目进行测试,直到出现下图的结果,就表明第一阶段的设计正确无误。



三、第二个阶段的设计

*Struts部分的设计

修改left.jsp文件的代码 。

将文件中的超级链接以*.do的方式提交给Servlet,于是left.jsp中关于超级链接的代码修改为:

<a href="getaffairs.do?sortId=<%=String.valueOf(sort.getSort Id())%>" target="mainFrame"><%=sort.getName()%></a>

其中sortId要向控制器传递分类号,才能依据这个要素在affair表中查询符合条件的所有事务信息。

创建Action及ActionForward组件

控制器接收到用户请求后,根据传递过来的分类号要得到两个数据:一个是隶属该分类的所有事务列表;一个是分类名,用于在下一个视图页面显示。 

Action组件类AffairListAction.java文件中的核心代码如下:













这一部分工作结束后,struts-config.xml文件中增添了一个<action>元素,内容如下:

<action>

   input="/left.jsp"

   path="/getaffairs"

   type="action.AffairListAction">

   <forward name="result" path="/affairs_list_view.jsp" />

</action>

Hibernate部分的设计

 ⑴ 编写接口方法 。

   这个阶段涉及到对两个数据库表的操作:

   ① 从sort表中取出指定分类号对应的记录,即获取一个

Sort类对象;

   ② 从affair表中取出隶属某个分类的所有事务信息。

   这两个操作分别通过DAO类提供的findById()方法和findBySortId()方法实现,所以在对应的接口类中要定义这两个方法。

*ISortDAO.java中定义抽象方法:


    public Sort findById(java.lang.Integer id);


* IAffairDAO.java中定义抽象方法:


    public List<Affair> findBySortId(Object sortId);


    这样就可以在业务层通过dao对象调用该方法了。 

建立并完善service层业务

   这个阶段的任务有两个:

   ① 在SortService.java文件中编写获取某个分类对象的方法,Action组件中设定了该方法的名称为getSort()。

   ② 在service包中创建针对AffairDAO的业务层类AffairService.java,Action组件中设定了获取隶属于某个分类的所有事务信息的业务方法是getAffairList() 

  SortService.java文件中getSort()方法的代码如下(省略部分与getSortList()方法的代码相同):

public staticSortgetSort(Integer sortId) {

  ISortDAOdao = DAOFactory.getSortDAO();

  try{

  Sortsort = dao.findById(sortId);

  System.out.println("成功地获得了某个分类信息!");

  returnsort;

  }catch (HibernateException e) {………}

       finally { ……… }

}

AffairService.java中的getAffairList()方法的代码如下:













阶段测试

部署项目进行测试,直到出现下图的结果,就表明第二阶段的设计正确无误。












四、第三个阶段的设计

* Struts部分的设计

修改affairs_list_view.jsp文件的代码

   在视图中点击详细超级链接时,要以*.do的方式向Servlet提交请求,因此要修改这里的代码。

修改后的代码为:

<a href="getdetail.do?affairId=<%=affair.getAffairId()%>">详细</a>

创建Action及ActionForward组件

   控制器接收到用户请求后,根据传递过来的事务号要得到两个数据:一个是针对这条事务的一个对象,存储了事务的详细信息;一个是分类名,用于在下一个视图页面显示。

Action组件类AffairDetailAction.java文件中的核心代码如下:













这一部分工作结束后,查看struts-config.xml配置文件

*Hibernate部分的设计

编写接口方法

   这个阶段涉及到对两个数据库表的操作:

   ① 操作sort表,得到指定了分类号的一个Sort类对象;

   ② 从affair表中取出指定事务号的某条事务记录。

   获取某条事务信息的操作将通过DAO类提供的findById()方法实现,所以在对应的接口类IAffairDAO.java中定义如下方法:

   public Affair findById(java.lang.Integerid);

   这样就可以在业务层通过dao对象调用该方法了。 

  完善service层业务

   在AffairService.java文件中补充getAffair()方法,用于获取Affair对象。

   在这个方法里,将依据关键字affairId检索数据表,因此要调用DAO类的findById()方法。

getAffair()方法的代码如下:











*阶段测试

部署项目进行测试,直到出现图7-27的结果,就表明第三阶段的设计正确无误。