MyEclipse+struts+Hibernate配置开发手册

MyEclipse+struts+Hibernate配置开发手册

 

 

 


说明:

 

这个手册只是为初学者制作的环境配置和快速开发的一些基本方法,为的是广大爱好者能快速上手,少走我走过的弯路,里面没有任何关于java模式和其他相关的说明。本人水平有限,也没有能力去讨论关于模式设计和开发细节的一些内容。

 

建议:

 

如果你还不清楚strutshibernate的一些基本原理,希望能先去了解一下这方面的相关内容。

 

推荐:

 

Hibernate中文手册》作者认为要学Hibernate看这个就足够了,里面几乎包括了所有的细节,不过可能不太适合快速入门。

 

地址:http://www.hibernate.org/hib_docs/v3/reference/zh- cn/html_single/

 

关于struts的资料就很多了,这里推荐一个可以下载一些入门教程的网站。

 

地址:http://www.wnetw.com/jclub/index.jsp

 

强烈建议入门的朋友先了解一下基本的原理!否则本文章可能对你没有任何帮助。

 

相关工具下载:(注意版本)

mysql5.0 http://www.mysql.org

eclipse 3.1.1 http://www.eclipse.org

myeclipse 4.0.3 http://www.myeclipseide.com

&nb sp;tomcat5.5

 

安装:

 

关于tomcatmysql的安装就不多说了,需要注意的是最好保证你的 jdk1.5的版本,并配置好你的环境变量,不然可能会遇到一些问题。

 

eclipse解开,再去安装刚下载的myeclipse,在安装的时候需要把路径指定到刚才解开的eclipse上,由于myeclipse是个收费软件,所以需要注册。不过一般按照Chinese的习惯,去google一个注册码就可以了:}

 

开发环境部署:

 

好了,现在保证你的mysqltomcat服务能够正常启动,myeclipse能够正常打开(如果不能,可以去找一下相关的说明或者给作者留言)。下面我们就要开始真正的开始部署一个传说中的tomcat+struts+hibernate+mysql结构的工程了!(faint!前言就写的我好累)

 

首先,在myeclipse里新建一个工程。在左边的Package Exporler面版里点右键选择new->project

 

在跳出菜单里选择MyEclipse->J2EE Projects->Web Project

 

点击next后进入如下画面:

工程名为:test

 

结束后点击Finish

 

好了,如果成功的话你就会在 Package Exporler里看到一个新的test工程!现在我们先配置一下数据库方面的东西。首先在你的mysql 里建立一个数据库webases,再在里面新建一个表admin,里面三个字段分别为id,name,password其中id为自动取值的主键(mysql具体的操作可以自己找资料,不是本文涉及范围)。

 

再回到myeclipse ,选中window->Open Perspective->Other

 

可以看到现在跳出一个名为Select Perspective的菜单,在里面选中MyEclipse Databases Exporler,可以看到现在到了下面的页面。

按以上图示输入相关字段后点击Finish便建立了一个数据库连接,在新出现的JDBC for Mysql上点右键,选择Open connection…,确认用户名和密码正确后点OK,如果一切顺利的话你会看到下面的画面:

这说明你已经和数据库建立了正确的连接。现在我们再回到window->Open Perspective- >Other…里的MyEclipse,也就是我们刚进来的时候看到的画面。

 

右键点击你刚建立的工程 test并选择MyEclipse->Add struts Capabilities…在跳出的菜单里按照如下输入并确定:

好了,现在你已经为你的工程增加了struts,接下来和上面一样在右键工程后选择MyEclipse- >Add Hibernate Capabilities…一路确定下来为你的工程添加Hibernate。(为方便起见我们在选择路径时把HibernateSessionFactory.java放在了src/com下面,其实最好建立个单独的目录如 src/com/hibernate

 

为了更好的演示我们不建立通常的登陆页面而是建立个注册页面。选择 src目录下的hibernate.cfg.xml文件。照如下填写并保存。这样hibernate就为你建立了数据库的连接池。

下面我们再选择WebRoot/WEB-INF/struts-config.xml文件,在画面中点击右键选择new- >Form, Action and JSP。如下填写

再选择JSP选项,如下

最后选择Finish

 

再新建一个一个success.jsp的页面,

 

在刚才struts- config.xml文件里右键选择addAdmin选择Properties,在菜单里选择Forwords,再点add,如下图填写

最后你的struts-config.xml就是下面这个样子:

 

下面我们转到hibernate。换到刚才我们建立数据库的页面,选择你的admin的表点右键选择Create Hibernate Mapping。选择好打包路径后选择Finish。如图:

在你刚才选择的路径下(我为方便是src/com/yourcompanyname/)下新建立的文件 AdminDAOFactory.java文件并输入以下内容:

 

package com.yourcompanyname;

 

import java.util.Iterator;

 

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;

 

import com.hibernate.SessionFactory;

 

public class AdminDAOFactory {

 Session session;

 Transaction tx;

 public void add(Admin admin) throws HibernateException {

  /**

   * Creation Date: 11-17-2005

   * TODO Add a new admin user.

   * @param An object of Admin

   * @return void

   * @author Coder Guo

   */

  try {

   session = SessionFactory.currentSession();

   tx = session.beginTransaction();

   //Add a new admin

   session.save(admin);

   tx.commit ();

  }catch(HibernateException e){

   throw e;

  }finally{

   if (tx!=null) {

    tx.rollback();

   }

   SessionFactory.closeSession();

  }

 }

}

 

再打开com.yourcompany.struts.action下的AddAdminAction.java添加(其中如果有错误选中好按ctrl+shift+o自动添加包)

 

public class AddAdminAction extends Action {

 

 // --------------------------------------------------------- Instance Variables

 

 // --------------------------------------------------------- Methods

 

 /**

  * Method execute

  * @param mapping

  * @param form

  * @param request

  * @param response

  * @return ActionForward

  * @author Coder Guo

  */

 public ActionForward execute(

  ActionMapping mapping,

  ActionForm form,

  HttpServletRequest request,

  HttpServletResponse response) {

  AddAdminForm addAdminForm = (AddAdminForm) form;

 

  // TODO Add a new admin

  Admin admin = new Admin();

  admin.setName(addAdminForm.getName ());

  admin.setPassword(addAdminForm.getPassword ());

  AdminDAOFactory adminDAO = new AdminDAOFactory ();

  adminDAO.add(admin);

 

  return mapping.findForward("success");

 }

 

}

 

再打开com.yourcompanyname.struts.form下的AddAdminForm.java,修改(如果有错误按照上面说的方法导入包)

 public ActionErrors validate(

  ActionMapping mapping,

  HttpServletRequest request) {

 

  // TODO Auto-generated method stub

  ActionErrors errors = new ActionErrors();

 

  Session session = SessionFactory.currentSession();

  Transaction tx = session.beginTransaction ();

  Query query = session.createQuery("select admin from Admin as admin where admin.name = '" + this.name + "'");

  Iterator it = query.iterate ();

  if (it.hasNext()){

   errors.add ("addAdmin.err.name",new ActionMessage("form.addAdmin.err.name"));

  }

  tx.commit();

  SessionFactory.closeSession ();

  return errors;

 }

 

 public void reset(ActionMapping mapping, HttpServletRequest request) {

 

  // TODO Auto-generated method stub

  this.name=null;

  this.password=null;

 }

 

再打开com/yourcompanyname/struts下的ApplicationResource.properties在这里面添加错误信息:

 

Form.addAdmin.err.name=err

 

最后,(汗,好累啊-_-!)打开addAdmin.jsp修改成如下:

 

<%@ page contentType="text/html; charset=utf-8"%>

<%@ page language="java"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

 

<script language = "javascript">

<!--

function check(){

 if (loginForm.userName.value == "" || loginForm.password.value == ""){

  alert("请输入完整的信息!");

  loginForm.userName.focus();

  return false;

 }

}

//-->

</script>

 

 <!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">

<html:html>

  <head>

    <html:base />

 

    <title>login.jsp</title>

    <link href="css/webcss.css" rel="stylesheet" type="text/css">

 

    <meta http-equiv="pragma" content="no- cache">

    <meta http-equiv="cache-control" content="no- cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http- equiv="description" content="This is my page">

  </head>

 

 

  <body>

  <center>

   <p>&nbsp;</p>

   <p>&nbsp;</p>

   <table width="300" border="0" cellpadding="0" cellspacing="0">

   <html:form action="/addAdmin" focus="name" method="GET">

     <tr align="center" valign="middle">

       <td colspan="2" class="typt_normal">新增管理员</td>

     </tr>

     <tr>

       <td width="100" align="center" valign="middle" class="typt_normal">名称: </td>

       <td width="200" align="left"><html:text property="name" styleClass="text_s"/><html:errors property="addAdmin.err.name"/></td>

     </tr>

     <tr>

       <td width="100" align="center" valign="middle" class="typt_normal">密码: </td>

       <td width="200" align="left"><html:password property="password" styleClass="text_s"/></td>

     </tr>

     <tr>

       <td colspan="2" align="center" valign="middle"><html:submit value="提交" οnclick="return check ();"/><html:reset value="重置"></html:reset></td>

       </tr>

 </html:form>

   </table>

 </center>

 </body>

 

</html:html>

 

其中可以看到如何在struts的标签中使用javascript的方法。

 

配置好myeclipsetomcat的连接。在window->Preferences做如下设定:

在项目文件点右键->myeclipse”->Add and remove project deployment”,如下图:

好了,我们的配置工作基本结束了,myeclipse上开启tomcat服务

 

Hibernate Development in MyEclipse 5.1.0 (Eclipse3.2 Kernel)

我们采用如下的简单例子来进行说明:

两个在MySql环境下设计的Table

T_Account_Info, T_DEPT_INFO

其中

T_Account_Info refer T_Dept_Info,

T_Account_Infofield dept_Number refer T_Dept_Info’s  Primary key dept_Number

 

(1)The dbase design is as following:

 

 

 

 

 

 

(2)create dbase connection in MyEclipse 5.1.0

 

 

 

(3) use existed dbase to Reversely Create Hibernate mapping File and DAO file in MyEclipse Hibernate perspective

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(4) create domain class according to hbm.xml

 

 

 

(5)Test created DAO

 

       TAccountInfoDAO accountDao = new TAccountInfoDAO();

       TAccountInfo accountInfo = accountDao.findById(2);

       TDeptInfo deptInfo = accountInfo.getDeptInfo();

       System.out.println(deptInfo.getDeptNumber());

       System.out.println(deptInfo.getDeptName());

       System.out.println(deptInfo.getDeptMembers());

 

 

 

 

 

 

 

 

myeclipse开发hibernate应用程序示例

今天看了hibernate持久层的概述,就用myeclipse试着动手开发了一个简单的学生信息管理小程序。

在开发之前,先要理解一个概念ORMORMobject-relation mapping)是对象关系映射,对象指的是java中的对象,关系是指关系型数据库,ORM也就是指从Java对象到数据库之间的映射,也就是通过一个类的操作来代表数据库中的操作。而Hibernate是一个ORM的实现,所以,主要功能就是操作数据库(以对象的形式操作数据库)。

ORM模式图如下:

本人运用的开发环境为:Eclipse 3.2.1 +MyEclipse5.1集成开发环境,数据库为MySQL4.01版本。

下面开始动手吧……
S1创建数据库,数据库脚本如下:

create database hibernate;

use hibernate;

create table Student

(

       id varchar(32) not null primary key,

       sName varchar(20) not null,

       sNO varchar(20) not null,

       sex varchar(2),      

       email varchar(30)

);

S2: 配置MyEclipse环境,使之能够生成HBM文件,即Hibernate映射文件,过程如下:

配置MySQL驱动程序:

Eclipse中,点击Window à Preferences à MyEclipse à Database Explorer à Drivers à New…

选择Driver template 为:MySQL Connector/J

URL: jdbc:mysql://localhost:3306/hibernate,其中hibernate为数据库名称;

添加MySQL驱动:mysql/lib/mysqldriver.jar,点击 OK

现在只是配置好数据库的环境,但是还没有真正的生成它,还要创建Database Profile方法如下:

打开Window à Open PerspectiveàMyEclipse Database Explorer

选择其中的New 图标,上面那个是我以前做过的 ,因此在新建一个。

Profile name 由自己来定,我定为JDBC for MySQLDriver 就是选由上面刚刚配置过的

MySQL Connector/J,点击Next à Finish

右键刚刚创建的JDBC for MySQL2,打开Open connection…

出现了我们刚刚创建的数据库student,好了,可以松一口气了,暂时先放一放,后面还会用到这个界面的,在 打开Window à Open PerspectiveàJava界面。

S3新建一个J2EEWeb Project ,工程名为StuHibernate

然后给这个项目添加hibernate必要的文件.在我们项目名上点击右键,选择MyEclipes --> Add Hibernate Capabilities...弹出对话框如下图:

其中,JAR Library Installation 选为 Copy checked Library Jars to Project …项,其它项均为默认,点击Next,进入下一个页面后,继续点击Next,进入第三个页面

选择 DB Profile 文件JDBC for MySQL,就是我们在S2步骤中配置的数据库驱动,在这里,我们就什么也不用手动添写了,直接生成,这就是S2步骤的好处,其中数据库的言也选为MySQL,点击Next进入下一页面

取消对Crate SessionFactory class? 选项的选择,点击Finish。项目结构如下图:

src 目录下产生了一个hibernate.cfg.xml 文件:主要是对Hibernate环境配置的,包括使用的数据库或数据源。Eclipse为此提供了图形环境配置,配置方法为在S2步骤中以配置好了,因此直接生成了如下页面:

其中本人数据库密码为空,因此什么都没有写。由于MySQL数据库驱动以经加了WEB-INF/lib文件夹中,上面的图中以有显示。如果没有加入,则复制到里面。一切准备工作都以就绪,下面我们就开始真正的编写代码了!(终于写到一半了,好累啊,呵呵)

S4编写POJO类,也就是持久化类:只包含settergetter方法的类。POJOPlain Old Java Objects)是最普通的Java对象,很像JavaBean。类名最好和表名相同,开头最好大写,Student.java

包名:com.cc.hibernate

类名:Student

代码如下:

package com.cc.hibernate;

   //POJO

public class Student {

   //写入若干属性

   private String id;

   private String sname;

   private String sno;

   private String sex;

   private String email;

   public String getEmail() {

      return email;

   }

   public void setEmail(String email) {

      this.email = email;

   }

   public String getId() {

      return id;

   }

   public void setId(String id) {

      this.id = id;

   }

   public String getSex() {

      return sex;

   }

   public void setSex(String sex) {

      this.sex = sex;

   }

   public String getSname() {

      return sname;

   }

   public void setSname(String sname) {

      this.sname = sname;

   }

   public String getSno() {

      return sno;

   }

   public void setSno(String sno) {

      this.sno = sno;

   }

}

S5建立映射文件,在次 打开Window à Open PerspectiveàMyEclipse Database Explorer,接到S2步骤

右键点击student表,打开Hibernate Reverse Engineering…

创建到包含有POJO类包的文件夹下:

点击 Next,进入下一页面

Type Mapping Hibernate types

主键生成方式选为 assigned(指派),由用户自行完成,单击 Next,最后点击 Finish

在次切回 Window à Open PerspectiveàJava界面,出现 Student.hbm.xml映射文件,双击打开查看其代码。

此文件完成Student类到student表的关系

S6编写具体类,具体操作Hibernate 方法,在Com.cc.hibernate包下

新建类 StudentOperate.java

package com.cc.hibernate;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.Transaction;

public class StudentOperate {

    //Hibernate中,所有的操作都是通过Session完成

   //Session不同于JSPSession

   private Session session=null;

   //在构造方法之中实例化session对象

   public StudentOperate(){

      // 找到Hibernate配置

      Configuration config=new Configuration().configure();

      //从配置中取出SessionFactory

      SessionFactory factory=config.buildSessionFactory();

      //SessionFactory中取出一个Session

      this.session=factory.openSession();

   }

  

   //所有操作都是由session进行的

   //向数据库中增加数据

   public void insert(Student student){

      //开始事务

      Transaction tran=this.session.beginTransaction();

      //执行语句

      this.session.save(student);

      //提交事务

      tran.commit();

   }

}

S7com.cc.hibernate 包下新建一个测试类 StudentTest.java

代码如下:

package com.cc.hibernate;

public class StudentTest {

   /**

    * @param args

    */

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      //生成POJO类实例化对象

      Student stu=new Student();

      stu.setId("006");

      stu.setSname("chen");

      stu.setSno("03170217");

      stu.setSex("");

      stu.setEmail("chenchuang.sy@163.com");

     

      //实例化 StudentOperate 对象

      StudentOperate op=new StudentOperate();

      op.insert(stu);

   }

}

运行后的页面为:

再次查看数据库,看是否添加成功。

如果希望看见所执行的SQL语句,打开hibernate.cfg.xml文件

点击 Add按钮后,出现如下页面:

选择Propertyshow_sql,设置Valueture,点击OK

运行后的界面为:

呵呵 终于完成了!

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值