以前用的是ECLIPSE 的WTP 版本,用的HIBERNATE 是自己挂上去的,这几天在网上找了一下资料,用MyEclipse做了一个STRUTS + HIBERNATE 的例子。
觉得用MYECLIPSE 开发J2EE 方面的东东的速度还是快很多。
环境:MyEclipse Enterprise Workbench Version: 5.1.0 GA
里面我们用的是STURTS 1.2 Hibernate 3.0
数据库: MS SQL SERVER 2000
web service: tomcat 5.5.20
JDBC 驱动:msbase.jar mssqlserver.jar msutil.jar 这个可以到Microsoft 的官网上去下。
现在, 我们现做这个例子
一、建一个工程。
在Package Explorer 里点右键-->New-->Project-->MyEclipse/J2EE Projects/Web Project
点Next。我们在Project Name 里面写上工程的名字,这里我们用Example01 。见《图一》
二、把JDBC 驱动导入工程中。
把这三个文件(msbase.jar mssqlserver.jar msutil.jar )放入:《图二》所示的lib 下。即,把这三个文件复制后,在lib上点右键粘贴就可以了。
三、把STRUTS 导入工程中
在工程名Example01上点右键-->MyEclipse-->AddStrutsCapabilities,
出现《图三》所示界面,这里我们在Struts specification 里单先Struts 1.2,点Finish。
四、现在,我们要配一下STRUTS 了。
看看我们的Package Explorer,如《图四》所示。在双击struts-config.xml,然后在struts-config.xml里面,设计
右键-->New-->Form,Acion and JSP,接着出现了Struts 1.2 Form Declaration 这个界面,填入相应的值后。如《图五》所示
点Finish。
现在那个struts-config.xml里面就生成了一个图,如《图六》所示。还差一个东东就好了,这个Action 操作成功后,我们还要让他跳转到一个页面里了,所以还得再改改那个AddTestAction.在它上面点右键-->properties
出现界面如《图七》所示,在Optional Details / Forwards 一栏里点 ADD,填入《图八》所示的东东。
五、控制层,视图层上的东东,我们弄好了,我们来做有关数所库,和数据连接方面的东东
在数据库里建表,因为这是一个DEMO ,所以,建一个简单一点的表就可以了。表的设计如《图九》所示。
六、接下来把Hibernate 的东东加入到工程中。
右键点击工程名:Example01-->MyEclipse-->AddHibernateCapabilities
出现在一个配置界面如《图十》所示,这里我选的是Hibernate 3.点Next.如《图十一》所示,再点Next如《图十二》所示填入相对应的信息,多说一句,我的那个刚才设计的那个数据库的表test是放在Test20070105下的。
点Next填入《图十三》对应的信息。
七、接下来要环境为我们生成MAPING 文件,还有POJO 和DAO。
八、Windwos-->Open Perspactive-->MyEclipse Hibernate
在DB Browser 里面点NEW 那个添加数据库的那个图标。如《图十四》所示。Finish 以后,启动它。展开后如《图十五》所示。
在test 上点右键-->Hibernate Reverse Engineering...配置情况如图十六,十七所示
九、
改一下AddTestForm,整个AddTestForm的代码如下,现在是在里面加入了两个属性,name ,password ,以及相应的GET SET 器。
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import com.yourcompany.hibernate.HibernateSessionFactory;
/**
* MyEclipse Struts
* Creation date: 03-15-2007
*
* XDoclet definition:
* @struts.form name="addTestForm"
*/
public class AddTestForm extends ActionForm {
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors = new ActionErrors();
Session session = (Session) HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction ();
Query query = session.createQuery("select test from Test as test where test.name = '" + this.name + "'");
Iterator it = query.iterate ();
if (it.hasNext()){
errors.add ("addTest.err.name",new ActionMessage("form.addTest.err.name"));
}
tx.commit();
HibernateSessionFactory.closeSession ();
return errors;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
this.name=null;
this.password=null;
}
}
十、当请求提交后,进入到addTestAction 中的时候,我们要在里面,加入相应的处理代码。
整个 addTestAction 的代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.worksoft.TestDAOFactory;
import com.yourcompany.hibernate.Test;
import com.yourcompany.struts.form.AddTestForm;
/**
* MyEclipse Struts
* Creation date: 03-15-2007
*
* XDoclet definition:
* @struts.action path="/addTest" name="addTestForm" input="/form/addTest.jsp" scope="request" validate="true"
*/
public class AddTestAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AddTestForm addTestForm = (AddTestForm) form;// TODO Auto-generated method stub
Test test = new Test();
test.setName(addTestForm.getName ());
test.setPassword(addTestForm.getPassword ());
TestDAOFactory testDAO = new TestDAOFactory ();
testDAO.add(test);
return mapping.findForward("success");
}
}
十一、这里的要写一个TestDAOFactory类,
整个TestDAOFactory的代码如下:
package com.worksoft;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.yourcompany.hibernate.HibernateSessionFactory;
import com.yourcompany.hibernate.Test;
public class TestDAOFactory {
Session session;
Transaction tx;
public void add(Test test) throws HibernateException {
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
session.save(test);
tx.commit();
} catch (HibernateException e) {
throw e;
} finally {
if (tx != null) {
tx.rollback();
}
HibernateSessionFactory.closeSession();
}
}
}
十二、/form/addTest.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 "-//W3C//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> </p>
<p> </p>
<table width="300" border="0" cellpadding="0" cellspacing="0">
<html:form action="/addTest" focus="name" method="POST">
<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="addTest.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>
十三、我们还要在这个/form 下面建一个 success.jsp页面。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
success <br>
</body>
</html>
十四、现在,代码都写好了,要做部署了。
现在,我用的TOMCAT 5.5.20是装在D 盘的,要把它挂进来。
右键点击工程名:Example01-->MyEclipse-->Add and Remove Project Deployments...点ADD BUTTON
在弹出来的界面中 点 Edit server connectors..
这时会再谈一个界面出来,我们在左边那一栏里选中Tomcat 5,把Tomcat 的安装路径加进去。
如《图十八》所示,那个TOMCAT 的 单选框,一定要选成Enable,然后点apply
我们在退回到 Manage Deployments 界面,我们会发现,我们已经把Tomcat 服务器加进去了
现在选中Tomcat5 后,点Redeploy 。就部署好了
十五、启动 server 看看有没有BUG 吧
注:因为还没有研究这个图片怎么挂上来,我把他放在相册中,图一 对应的是 20070315_01.jsp 这个图片.
觉得用MYECLIPSE 开发J2EE 方面的东东的速度还是快很多。
环境:MyEclipse Enterprise Workbench Version: 5.1.0 GA
里面我们用的是STURTS 1.2 Hibernate 3.0
数据库: MS SQL SERVER 2000
web service: tomcat 5.5.20
JDBC 驱动:msbase.jar mssqlserver.jar msutil.jar 这个可以到Microsoft 的官网上去下。
现在, 我们现做这个例子
一、建一个工程。
在Package Explorer 里点右键-->New-->Project-->MyEclipse/J2EE Projects/Web Project
点Next。我们在Project Name 里面写上工程的名字,这里我们用Example01 。见《图一》
二、把JDBC 驱动导入工程中。
把这三个文件(msbase.jar mssqlserver.jar msutil.jar )放入:《图二》所示的lib 下。即,把这三个文件复制后,在lib上点右键粘贴就可以了。
三、把STRUTS 导入工程中
在工程名Example01上点右键-->MyEclipse-->AddStrutsCapabilities,
出现《图三》所示界面,这里我们在Struts specification 里单先Struts 1.2,点Finish。
四、现在,我们要配一下STRUTS 了。
看看我们的Package Explorer,如《图四》所示。在双击struts-config.xml,然后在struts-config.xml里面,设计
右键-->New-->Form,Acion and JSP,接着出现了Struts 1.2 Form Declaration 这个界面,填入相应的值后。如《图五》所示
点Finish。
现在那个struts-config.xml里面就生成了一个图,如《图六》所示。还差一个东东就好了,这个Action 操作成功后,我们还要让他跳转到一个页面里了,所以还得再改改那个AddTestAction.在它上面点右键-->properties
出现界面如《图七》所示,在Optional Details / Forwards 一栏里点 ADD,填入《图八》所示的东东。
五、控制层,视图层上的东东,我们弄好了,我们来做有关数所库,和数据连接方面的东东
在数据库里建表,因为这是一个DEMO ,所以,建一个简单一点的表就可以了。表的设计如《图九》所示。
六、接下来把Hibernate 的东东加入到工程中。
右键点击工程名:Example01-->MyEclipse-->AddHibernateCapabilities
出现在一个配置界面如《图十》所示,这里我选的是Hibernate 3.点Next.如《图十一》所示,再点Next如《图十二》所示填入相对应的信息,多说一句,我的那个刚才设计的那个数据库的表test是放在Test20070105下的。
点Next填入《图十三》对应的信息。
七、接下来要环境为我们生成MAPING 文件,还有POJO 和DAO。
八、Windwos-->Open Perspactive-->MyEclipse Hibernate
在DB Browser 里面点NEW 那个添加数据库的那个图标。如《图十四》所示。Finish 以后,启动它。展开后如《图十五》所示。
在test 上点右键-->Hibernate Reverse Engineering...配置情况如图十六,十七所示
九、
改一下AddTestForm,整个AddTestForm的代码如下,现在是在里面加入了两个属性,name ,password ,以及相应的GET SET 器。
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import com.yourcompany.hibernate.HibernateSessionFactory;
/**
* MyEclipse Struts
* Creation date: 03-15-2007
*
* XDoclet definition:
* @struts.form name="addTestForm"
*/
public class AddTestForm extends ActionForm {
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors = new ActionErrors();
Session session = (Session) HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction ();
Query query = session.createQuery("select test from Test as test where test.name = '" + this.name + "'");
Iterator it = query.iterate ();
if (it.hasNext()){
errors.add ("addTest.err.name",new ActionMessage("form.addTest.err.name"));
}
tx.commit();
HibernateSessionFactory.closeSession ();
return errors;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
this.name=null;
this.password=null;
}
}
十、当请求提交后,进入到addTestAction 中的时候,我们要在里面,加入相应的处理代码。
整个 addTestAction 的代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.worksoft.TestDAOFactory;
import com.yourcompany.hibernate.Test;
import com.yourcompany.struts.form.AddTestForm;
/**
* MyEclipse Struts
* Creation date: 03-15-2007
*
* XDoclet definition:
* @struts.action path="/addTest" name="addTestForm" input="/form/addTest.jsp" scope="request" validate="true"
*/
public class AddTestAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AddTestForm addTestForm = (AddTestForm) form;// TODO Auto-generated method stub
Test test = new Test();
test.setName(addTestForm.getName ());
test.setPassword(addTestForm.getPassword ());
TestDAOFactory testDAO = new TestDAOFactory ();
testDAO.add(test);
return mapping.findForward("success");
}
}
十一、这里的要写一个TestDAOFactory类,
整个TestDAOFactory的代码如下:
package com.worksoft;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.yourcompany.hibernate.HibernateSessionFactory;
import com.yourcompany.hibernate.Test;
public class TestDAOFactory {
Session session;
Transaction tx;
public void add(Test test) throws HibernateException {
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
session.save(test);
tx.commit();
} catch (HibernateException e) {
throw e;
} finally {
if (tx != null) {
tx.rollback();
}
HibernateSessionFactory.closeSession();
}
}
}
十二、/form/addTest.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 "-//W3C//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> </p>
<p> </p>
<table width="300" border="0" cellpadding="0" cellspacing="0">
<html:form action="/addTest" focus="name" method="POST">
<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="addTest.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>
十三、我们还要在这个/form 下面建一个 success.jsp页面。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
success <br>
</body>
</html>
十四、现在,代码都写好了,要做部署了。
现在,我用的TOMCAT 5.5.20是装在D 盘的,要把它挂进来。
右键点击工程名:Example01-->MyEclipse-->Add and Remove Project Deployments...点ADD BUTTON
在弹出来的界面中 点 Edit server connectors..
这时会再谈一个界面出来,我们在左边那一栏里选中Tomcat 5,把Tomcat 的安装路径加进去。
如《图十八》所示,那个TOMCAT 的 单选框,一定要选成Enable,然后点apply
我们在退回到 Manage Deployments 界面,我们会发现,我们已经把Tomcat 服务器加进去了
现在选中Tomcat5 后,点Redeploy 。就部署好了
十五、启动 server 看看有没有BUG 吧
注:因为还没有研究这个图片怎么挂上来,我把他放在相册中,图一 对应的是 20070315_01.jsp 这个图片.