免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1181 | 回复: 0
打印 上一主题 下一主题

利用MyEclipse开发Struts+Hibernate的应用[zt] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-07 14:34 |只看该作者 |倒序浏览
作者:小兵 个人主页:www.xiebing.com
本文主要使用MyEclipse来开发整合了Struts和Hibernate的应用,重点在于对二者MyEclipse提供支持的工具的使用,如果对于Struts和Hibernate还没有了解的朋友,建议先了解一些Struts和Hibernate的相关概念。
1、首先新建一个J2EE的Web Project,具体的设置如图所示:

点击,完成,完成新建项目。
2、在mydb项目上点击右键,选择MyEclipse选项,为该项目增加Struts的特性。

弹出如下窗口,具体配置,如图所示:

只需修改包的名称,本例中修改为:com.xiebing.struts ,其他保持默认即可。点击完成,MyEclipse就会自动将Struts应用所需要的jar包和自定义标签文件,以及struts的配置文件和资源文件拷贝或创建到相应的目录。
3、创建数据库
在MySQL的test的数据库中创建表:vipdata
DROP TABLE IF EXISTS vipdata;
CREATE TABLE vipdata (
   vipId int(11) NOT NULL AUTO_INCREMENT,
   vipName varchar(20) NOT NULL,
   vipTitle varchar(20) NOT NULL,
   PRIMARY KEY (vipId))
   TYPE=MyISAM;
4、打开MyEclipse Database Explorer视图,创建一个数据库的连接:
新建一个数据库连接:

在新的数据库连接的配置窗口中,填写如下配置:

其中Driver的配置,通过 窗口-首选项 MyEclipse Database Explorer Drivers来配置,如下图所示:

点击Edit按钮,对该选项进行配置,配置细节如下,Extra Class Path 要选中一个MySQL的JDBC驱动:

在DB Browser的窗口中连接数据库,连接成功后如图所示:

5、重新切换到MyEclipse视图,在项目上点击右键选择MyEclipse选项,为应用增加Hibernate特性,如图所示:

在出现的配置窗口中,选中“Add Hibernate 2.1 libraries to project?”,然后设定存放Hibernate库文件的目录为: /WEB-INF/lib 目录,默认会选择创建一个新的Hibernate配置文件hibernate.cfg.xml。

点击下一步,进入下面的Hibernate数据库连接配置界面,在Connection Profile选项中直接选择在MyEclipse Database Explorer中配置的vipdata选项,然后就会自动生成其他的配置,可以选择“Copy JDBC Driver and add to classpath”,这样就会将JDBC驱动拷贝到WEB-INF/lib目录中。:

点击下一步,来创建Hibernate的SessionFactory类,这是一个简单的集中管理Hibernate会话的工厂类,填写类的全名称。

点击完成,然后MyEclipse就会将Hibernate相关的jar包拷贝到lib目录下,同时会生成Hibernate的配置文件:hibernate.cfg.xml,和SessionFactory类(改类在下面我会给出简单说明)。
现在要利用MyEclipse Database Explorer视图中的工具来生成,Hibernate的映射文件。切换到MyEclipse Database Explorer视图,在表vipdata上点击右键,选择Create Hibernate Mapping,如图所示:

弹出如下配置界面,配置生成的持久化类和映射文件。

点击Browse,选择生成的类和映射文件的包:com.xiebing.hibernate

ID Generator选项,选择native。(还有很多其他的选项可选,根据应用的需要具体选择),

点击完成,这样会生成持久化类Vipdata和它的父类AbstractVipdata(生成父类,有利于日后应用的扩展,工具会自动生成详细的equals方法和hashCode方法)以及映射文件Vipdata.hbm.xml。同时会修改Hibernate的配置文件hibernate.cfg.xml,会增加一行:
mapping resource="com/xiebing/hibernate/Vipdata.hbm.xml"/>
6、使用MyEclipse Struts Editor打开Struts的配置文件:struts-config.xml,并切换到design面板。

选择面板上的Add Jsp Page标签,单击,我们来新建一个jsp页面。然后到design面板上单击:

出现如下所示的界面,具体设置如图所示:

修改AddVipData.jsp的代码如下:
page language="java" contentType="text/html; charset=gbk" %>
taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>
page import="com.xiebing.hibernate.VipService" %>
page import="java.util.List" %>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
html:html locale="true">
head>
   title>Vip Exampletitle>
   html:base/>
head>
body bgcolor="white">
   h3>Vip Exampleh3>
   html:errors/>
   
      /*
       * 这里将产生一个Vipdata的集合
       */
      List vipList = VipService.getInstance().getVipdataList();
      request.setAttribute("vipdatas", vipList);
   %>
   p>列出 code>Vipdatacode>表中的所有信息.p>
   table border=1>
   logic:iterate id="element" name="vipdatas" scope="request" type="com.xiebing.hibernate.Vipdata" >
   tr>
      td>bean:write name="element" property="vipName" />td>
      td>bean:write name="element" property="vipTitle" />td>
   tr>
   logic:iterate>
   table>
   p>新增加一条数据:p>   
   html:form action="AddVipdata.do" method="post">
      table border=1>
         tr>td>name:td>td>html:text property="vipName" />tr>
         tr>td>description:td>td>html:text property="vipTitle" />td>tr>
      table>br/>
      html:submit/>
   html:form>
body>
html:html>阿飞发送多幅发送给扶绥多给
此时加粗的部分会提示有问题(先不管他),因为还没有创建类:com.xiebing.hibernate.VipService
7、接下来就创建类:com.xiebing.hibernate.VipService。其主要就是完成我们的增删改查等具体业务逻辑的处理。
代码如下:
VipService.java
package com.xiebing.hibernate;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.ObjectNotFoundException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import com.xiebing.hibernate.Vipdata;
/**
* 通过Hibernate来操作数据库的业务逻辑类
*
*/
public class VipService
{
       private static VipService instance = null;
       private VipService()
       {
       }
       /**
        * 得到VipService的单态实例
        * @return VipService singleton.
        */
       public static synchronized VipService getInstance()
       {
              if (instance == null)
              {
                     instance = new VipService();
              }
              return instance;
       }
       /**
        * 通过id来获得Vipdata
        * @param id
        * @return Vipdata
        */
       public Vipdata getVipdata(Long id)
       {
              Session session = null;
              try
              {
                     //通过SessionFactory创建session实例
                     session = SessionFactory.currentSession();
                     //调用load方法加载数据
                     return (Vipdata) session.load(Vipdata.class, id);
              }
              catch (ObjectNotFoundException onfe)
              {
                     return null;
              }
              catch (HibernateException e)
              {
                     System.err.println("Hibernate Exception" + e.getMessage());
                     throw new RuntimeException(e);
              }
              finally
              {
                     if (session != null)
                     {
                            try
                            {
                                   //关闭session
                                   session.close();
                            }
                            catch (HibernateException e)
                            {
                                   System.err.println("Hibernate Exception" + e.getMessage());
                                   throw new RuntimeException(e);
                            }
                     }
              }
       }
       /**
        * 更新记录
        *
        * @param vipdata
        */
       public void updateVipdata(Vipdata vipdata)
       {
              Session session = null;
              try
              {
                     session = SessionFactory.currentSession();
                     //执行update操作
                     session.update(vipdata);
                     session.flush();
              }
              catch (HibernateException e)
              {
                     System.err.println("Hibernate Exception" + e.getMessage());
                     throw new RuntimeException(e);
              }
              finally
              {
                     if (session != null)
                     {
                            try
                            {
                                   session.close();
                            }
                            catch (HibernateException e)
                            {
                                   System.err.println("Hibernate Exception" + e.getMessage());
                                   throw new RuntimeException(e);
                            }
                     }
              }
       }
       /**
        * 得到所有的记录</

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/2016/showart_39525.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP