本文共 10866 字,大约阅读时间需要 36 分钟。
package cn.mldn.lxh.login6.dao;
import cn.mldn.lxh.login6.vo.Person;
public interface PersonDAO {
public boolean isLogin(Person person) throws Exception ; } 7.在src下新建一个类,包名cn.mldn.lxh.login6.vo,类名为Person,写入代码: package cn.mldn.lxh.login6.vo;public class Person {
private String id; private String name; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } 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; }}
8.在src下新建包名cn.mldn.lxh.login6.impl,类名LoginDAOImpl,覆写全部抽象方法。写入代码:
package cn.mldn.lxh.login6.impl;import java.util.Iterator;
import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;import cn.mldn.lxh.login6.dao.PersonDAO;
import cn.mldn.lxh.login6.factory.DefaultSessionFactory; import cn.mldn.lxh.login6.vo.Person;public class PersonDAOImpl implements PersonDAO {
private Session session; public PersonDAOImpl() { this.session=DefaultSessionFactory.getSession(); } public boolean isLogin(Person person) throws Exception { boolean flag=false; String hql="FROM Person AS p WHERE p.id=? AND p.password=?"; Query q= this.session.createQuery(hql); //设置查询参数 q.setString(0, person.getId()); q.setString(1,person.getPassword()); Iterator iter=q.list().iterator(); if(iter.hasNext()) { //修改成功标记 flag=true; //从查找出的对象取出名字 person.setName(((Person) iter.next()).getName()); } //关闭session连接 this.session.close(); return flag; }}
9.在src下新建工厂类cn.mldn.lxh.login6.factory,类名DAOFactorypackage cn.mldn.lxh.login6.factory;
import cn.mldn.lxh.login6.dao.PersonDAO;
import cn.mldn.lxh.login6.impl.PersonDAOImpl;public class DAOFactory {
public static PersonDAO getPersonDAOInstance() { return new PersonDAOImpl(); } } 10.建立映射文件:点表person右键,选择Create Hibernate Mapping,创建在包cn.mldn.lxh.login6.vo下,下面第一个方块打钩,Next----主键生成方式:assigned,完成。 11.修改映射文件Person.hbm.xml,写入代码,如下: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="cn.mldn.lxh.login6.vo.Person" table="person" catalog="people"> <id name="id" type="java.lang.String"> <column name="id" length="32" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="20" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="20" not-null="true" /> </property> </class> </hibernate-mapping> 12.工厂包内新建一个类,命名DefaultSessionFactory,写入代码: package cn.mldn.lxh.login6.factory;import org.hibernate.Session;
import org.hibernate.cfg.Configuration;public class DefaultSessionFactory {
public static Session getSession() { Session session=null; session =new Configuration().configure().buildSessionFactory().openSession(); return session; } }13.映射文件中选择show_sql---true
14.包cn.mldn.lxh.login6.vo下新建测试类(测试是否能连接数据库),类名TestDAO,主方法输出,写入代码: package cn.mldn.lxh.login6.vo;import java.util.Iterator;
import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;import cn.mldn.lxh.login6.factory.DAOFactory;
import cn.mldn.lxh.login6.factory.DefaultSessionFactory;public class TestDAO {
/**
* @param args * @throws Exception */ public static void main(String[] args) throws Exception { Session session = DefaultSessionFactory.getSession(); Person p=new Person(); p.setId("123456"); p.setPassword("123456"); String hql="FROM Person AS p WHERE p.id=? AND p.password=?"; Query q= session.createQuery(hql); //设置查询参数 q.setString(0, p.getId()); q.setString(1,p.getPassword()); List list = q.list(); System.out.println(list.size()); Iterator iter=q.list().iterator(); System.out.println(DAOFactory.getPersonDAOInstance().isLogin(p)); }}
15.项目添加Struts支持,包名cn.mldn.lxh.login6.struts。完成
16.添加一个JSP页面,名为login.jsp。Template to use:Standard JSP using Struts 1.2。代码修改如下: <%@ page language="java" pageEncoding="GbK"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> <html:html lang="true"> <head> <title>登陆程序 —— Struts + DAO + Hibernate</title> </head> <body> <center> <h1>登陆程序 —— Struts + DAO + Hibernate</h1> <hr> <br> <html:errors/> <logic:present name="flag" scope="request"> <logic:equal name="flag" value="true"> <h2>登陆成功!!!</h2> <h2>欢迎<font color="red">${person.name}</font>光临!!!</h2> </logic:equal> <logic:equal name="flag" value="false"> <h2>登陆失败!!!</h2> <h2>错误的用户ID或密码!!!</h2> </logic:equal> </logic:present> <br> <html:form action="login.do" method="post"> 用户ID:<html:text property="id"/><br> 密 码:<html:password property="password"/><br> <input type="hidden" name="status" value="login"> <html:submit value="登陆"/> <html:reset value="重置"/> </html:form> </center> </body> </html:html> 17.选择自定义透视图(Custonize Perspective) 选择struts 1.2,建立Struts 1.2 Form,Action&JSP18.在src下建立Struts 1.2 Form,Action_JSP,Use case:login,Superclass:org.apache.struts.action.ActionForm,
添加Form Properties,name和password----->next----->Finish 19.修改struts-config.xml,代码如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources /> <form-beans> <form-bean name="loginForm" type="cn.mldn.lxh.login6.struts.form.LoginForm" /></form-beans>
<global-exceptions />
<global-forwards /> <action-mappings> <action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="cn.mldn.lxh.login6.struts.action.LoginAction" parameter="status"> <forward name="suc" path="/login.jsp"></forward> <forward name="fal" path="/login.jsp"></forward> </action></action-mappings>
<message-resources
parameter="cn.mldn.lxh.login6.struts.ApplicationResources" /> </struts-config>20.修改ApplicationResources.properties的代码,实现错误输出。 # Resources for parameter 'cn.mldn.lxh.login6.struts.ApplicationResources' # Project SHLogin id.null = <li>\u7528\u6237ID\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01\uff01 password.null = <li>\u7528\u6237\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01\uff01 21.修改LoginForm.java,代码如下: /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package cn.mldn.lxh.login6.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: 03-12-2007 * * XDoclet definition: * * @struts.form name="loginForm" */ public class LoginForm extends ActionForm { /* * Generated fields *//** password property */
private String password;/** name property */
private String name;/** id property */
private String id;private String status;
// 如果status的值为login,则表示要验证ID和password
/*
* Generated Methods *//**
* Method validate * * @param mapping * @param request * @return ActionErrors */ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ("login".equals(this.status)) { if (this.id == null || "".equals(this.id)) { errors.add("id", new ActionMessage("id.null")); } if (this.password == null || "".equals(this.password)) { errors.add("password", new ActionMessage("password.null")); } } 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; }/**
* Returns the id. * * @return String */ public String getId() { return id; }/**
* Set the id. * * @param id * The id to set */ public void setId(String id) { this.id = id; }public String getStatus() {
return status; }public void setStatus(String status) {
this.status = status; } }22.修改LoginAction,代码如下:
* Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package cn.mldn.lxh.login6.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction;import cn.mldn.lxh.login6.factory.DAOFactory;
import cn.mldn.lxh.login6.struts.form.LoginForm; import cn.mldn.lxh.login6.vo.Person;/**
* MyEclipse Struts Creation date: 03-12-2007 * * XDoclet definition: * * @struts.action path="/login" name="loginForm" input="/form/login.jsp" * scope="request" validate="true" */ public class LoginAction extends DispatchAction { /* * Generated Methods *//**
* Method execute * * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; // 从ActionForm中取出要的内容 Person person = new Person(); person.setId(loginForm.getId()); person.setPassword(loginForm.getPassword()); boolean flag = false; try { flag = DAOFactory.getPersonDAOInstance().isLogin(person); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("flag", new Boolean(flag)); if (flag) { // 如果成功,则将person对象传递过去 request.setAttribute("person", person); return mapping.findForward("suc"); } else { return mapping.findForward("fal"); } } }23.运行MyEclipse内的Tomcat。运行框架。完成!!!
本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/07/15/1242954.html,如需转载请自行联系原作者