登录用的页面:logon.jsp
登录用的struts form:logonForm.java
登录核心struts action类:LogonAction.java
Hibernate的Logon.java类
数据库映射文件:Logon.hbm.xml
取得hibernate session的自定义类:MySession.java
1.logon.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LogonForm form</title>
</head>
<body>
<table>
<html:form action="/logon">
username : <html:text property="username"/><html:errors property="username"/><br>
password : <html:password property="password"/><html:errors property="password"/><br>
<html:submit value="logon"/>
<html:reset value="reset"/>
</html:form>
</table>
input your message!
</body>
</html>
2.logonForm.java
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;
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;
/**
* MyEclipse Struts
* Creation date: 08-18-2007
*
* XDoclet definition:
* @struts.form name="logonForm"
*/
public class LogonForm extends ActionForm {
/*
* Generated fields
*/
/**
*
*/
private static final long serialVersionUID = 1L;
/** username property */
private String username;
/** password property */
private String password;
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
//下面为基本验证项
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors=new ActionErrors();
if(username==null){
errors.add("username",new ActionMessage("message.usernameerror"));
}else if(password==null){
errors.add("password",new ActionMessage("message.passworderror"));
}
return errors;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
this.username=null;
this.password=null;
}
/**
* Returns the username.
* @return String
*/
public String getUsername() {
return username;
}
/**
* Set the username.
* @param username The username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* Returns the password.
* @return String
*/
public String getPassword() {
return password;
}
/**
* Set the password.
* @param password The password to set
*/
public void setPassword(String password) {
this.password = password;
}
}
3.LogonAction.java
/*
* 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 org.hibernate.Query;
import org.hibernate.Session;
import com.yourcompany.MySession;
import com.yourcompany.struts.form.LogonForm;
/**
* MyEclipse Struts
* Creation date: 08-18-2007
*
* XDoclet definition:
* @struts.action path="/logon" name="logonForm" input="/form/logon.jsp" scope="request" validate="true"
*/
public class LogonAction 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) {
LogonForm logonForm = (LogonForm) form;// TODO Auto-generated method stub
String username=logonForm.getUsername();
String password=logonForm.getPassword();
//与hibernate的集成
Session sess=new MySession().getMySession();
Query q = sess.createQuery("from Logon u where u.username = '"+username+"' and password='"+password+"'");
if(q.list().isEmpty()){
sess.close();
return mapping.findForward("error");
}else
sess.close();
return mapping.findForward("success");
}
}
4.Logon.java
package com.yourcompany;
/**
* Logon generated by MyEclipse Persistence Tools
*/
public class Logon implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 1L;
private long id;
private String username;
private long password;
// Constructors
/** default constructor */
public Logon() {
}
/** full constructor */
public Logon(String username, long password) {
this.username = username;
this.password = password;
}
// Property accessors
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public long getPassword() {
return this.password;
}
public void setPassword(long password) {
this.password = password;
}
}
Myeclipse下开发一个简单的struts和hibernate整合的例子
JSP专栏 2008-10-21 08:41:47 阅读591 评论0 字号:大中小
一.实验目的:
自己摸索了好久,才学会.为了让更多的人也能容易的作出一个struts和hibernate整合的例子,特把过程写下来,以便哥们们学习.(spring下次再整合)
二.实验环境:
(1)mysql5.0
(2)eclipse 3.2
(3)myeclipse5.0
(4)tomcat-5.0.28
说明:下载和安装的的事,我就不说了.看看我BLOG里其他文章或者到网上去搜索.
环境变量都要设置好.一切都准备好了,下面开始.
三.实验过程:
(1)建立工程
在myeclipse里新建一个工程。在左边的Package Exporler面版里点右键选择new->project ,在跳出菜单里选择MyEclipse->J2EE Projects->Web Project,点下面的Next.跳出对话框
取个工程名:liupro.然后点Fish.
(2)建立数据库
我用了MySQL主据库的图形化界面管理工具---Navicat(这不是必须的,你想用甚么都可以,也可以完全手动输入),避免了DOS风格的输入.
先连线:按上面填写,其中密码是你MySQL的密码
之后,就和SQL SERVER一样了,先建立一个数据库,名字:liupro;建立一个表,名字: admin;字段: id,name,password其中id为自动取值的主键(自增1,别忘记设置我画图时已经忘了).如下图:
(3).配置MyEclipse Databases Exporler
再回到myeclipse ,选中window->Open Perspective->Other…
可以看到现在跳出一个名为Select Perspective的菜单,在里面选中MyEclipse Databases Exporler,确定之后.如果第一次,打开它,那它就不会跳出下面的页面,直接去左面NEW一个,然后在编辑
之后,去JDBC for MySQL上面右键,OPEN CONNECTION
之后顺序打开,找到了如下:
(4)给工程添加Struts框架
现在我们再回到window->Open Perspective- >Other…里的MyEclipse
或者点击右边的切换按钮回到MyEclipse J2EE DEVELOPMENT
右键点击你刚建立的工程liupro,并选择MyEclipse->Add struts Capabilities…在跳出的对话框里按照如下输入(基本都是默认)并确定:
OK!
(5)给工程添加Hibernate框架
在liupro下面的src右键新建一个包,名字com.hibernate
右键点击你刚建立的工程liupro,并选择MyEclipse-> Add Hibernate Capabilities在跳出的对话框里按照如下输入(基本都是默认),注意需要选者的有:
然后点击Next
然后Finish
(6)连接池(不要怕这个名字,其实就是选一个而已)
我参考的例子上,为了更好的演示我们不建立通常的登陆页面而是建立个注册页面.那我也这样建立一个注册页面.
选择 src目录下的hibernate.cfg.xml文件。照如下填写并保存。这样hibernate就为你建立了数据库的连接池。其实,不用选,右边也默认打开了.如下图:
(7)配置struts-config.xml文件
下面我们再选择liupro/WebRoot/WEB-INF/struts-config.xml文件,在右边出于design模式下,点击右键选择new- >Form, Action and JSP。如下填写
其中切换到JSP选项卡,在 [] Creat JSP form?,记得打上钩,
点击FINISH.
在刚才struts- config.xml文件里右键选择addAdmin选择Properties
在选项卡里选择Forwords,再点add,如下图填写
Finsih.
最后你的struts-config.xml就是下面这个样子:
(8) Create Hibernate Mapping
象第三步一样,记得要用左下角的切换按钮,切换到DB Browser状态,然后在JDBC for MySQL上右键Open Connection,找到liupro/TABLE/admin,在这个表名上右键,选择Hibernate Reverse Engineering,如图
在跳出的对话框里,注意我选择了包名为刚才建立的com.hibernate,然后next;下一页里,ID Generator选择native ;然后Next,选中表之后,可以FINISH了.左边工程文件里会多了一个Admin.java和Hibernate.bhm.xml.
(9) 建立AdminDAOFactory.java文件
我建立在src /com.hibernate下,类名: AdminDAOFactory
全部内容如下:
package com.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class AdminDAOFactory {
Session session;
Transaction tx;
public void add(Admin admin) throws HibernateException {
try {
session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
//Add a new admin
session.save(admin);
tx.commit ();
}catch(HibernateException e){
//throw e;
System.out.println(e.getMessage());
}finally{
if (tx!=null) {
tx.rollback();
}
HibernateSessionFactory.closeSession();
}
}
}
(10)写ACTION
再打开com.yourcompany.struts.action下的
AddAdminAction.java
全部如下:
/*
* 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.hibernate.Admin;
import com.hibernate.AdminDAOFactory;
import com.yourcompany.struts.form.AddAdminForm;
/**
* MyEclipse Struts
* Creation date: 04-11-2007
*
* XDoclet definition:
* @struts.action path="/addAdmin" input="/form/addAdmin.jsp" scope="request" validate="true"
*/
public class AddAdminAction 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) {
AddAdminForm addAdminForm = (AddAdminForm) form;
// TODO here
Admin admin = new Admin();
admin.setName(addAdminForm.getName());
admin.setPassword(addAdminForm.getPassword());
AdminDAOFactory adminDAO=new AdminDAOFactory();
adminDAO.add(admin);
return mapping.findForward("success");
}
}
(11)修改FORM
再打开com.yourcompanyname.struts.form下的AddAdminForm.java
全部文字如下:
/**
* MyEclipse Struts
* Creation date: 04-11-2007
*
* XDoclet definition:
* @struts.form
*/
public class AddAdminForm extends ActionForm {
/*
* Generated fields
*/
/** password property */
private String password;
/** name property */
private String name;
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors=new ActionErrors();
Session session=HibernateSessionFactory.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();
HibernateSessionFactory.closeSession();
return errors;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
/**
* Returns the password.
* @return String
*/
public String getPassword() {
return password;
}
/**
* Set the password.
* @param password The password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* Returns the name.
* @return String
*/
public String getName() {
return name;
}
/**
* Set the name.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}
}
(12)资源文件里添加出错信息
再打开com/yourcompany/struts下的ApplicationResource.properties在这里面添加错误信息(就下面一行,没有分号):
Form.addAdmin.err.name=err
(13)修改JSP页面: 打开webRoot/form下的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"%>
<!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="/addAdmin" focus="name" method="GET">
<tr align="center" valign="middle">
<td colspan="2" >新增管理员</td>
</tr>
<tr>
<td width="100" align="center" valign="middle" >名称: </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" >密码: </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="提交" check ();"/><html:reset value="重置"></html:reset></td>
</tr>
</html:form>
</table>
</center>
</body>
</html:html>
Success.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" %>
<%@ 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" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>success.jsp</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>
管理员用户已经存入数据库! <br>
成功了!</body>
</html:html>
(13) 测试
现在打开浏览器,输入 http://127.0.0.1:8080/liupro/addAdmin.jsp如果没有错误,就可以看到你的jsp页面了!
也可以在MYECLIPSE里面直接点那个小地球的图标,更方便一些.输入地址就可以测试了.