Struts+Hibernte登陆范例

来源:互联网 发布:2014火的网络歌曲 编辑:程序博客网 时间:2024/05/16 05:30

登录用的页面: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下开发一个简单的strutshibernate整合的例子

JSP专栏 2008-10-21 08:41:47 阅读591 评论0 字号:大中

.实验目的:

自己摸索了好久,才学会.为了让更多的人也能容易的作出一个strutshibernate整合的例子,特把过程写下来,以便哥们们学习.(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.javaHibernate.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>&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" >新增管理员</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里面直接点那个小地球的图标,更方便一些.输入地址就可以测试了.

 

原创粉丝点击