`

Struts+DAO+Hibernate搭建完成!(源码)

阅读更多
昨天搭了这个框架实现用户登录,很高兴!同时也遇到了一些问题。不过总算完成了。

搭建环境:MyEclipse+Mysql

实现用户登录,以下为步骤:

1.在mysql中建立一个名为person的表。
表中数据:id varchar(32) no null primary key;
              name varchar(20) no null;
              password varchar(20) no null;
             
2.打开MyEclipse,从菜单中选择窗口,选择首选项,选择数据库浏览器。

3.配置数据库驱动(mysql-connector-java-5.1.6-bin.jar)。

4.选菜单的窗口,选择显示视图,选择其它,选MyEclipse中的DB Browser。点确定。从新窗口中选择New,连接数据库MySQL。

5.新建一个webproject,命名为SHLogin,加入Add Hibernate Capabilities...,选择Hibernate3.1,Next---Next----选择Mysql----Next----不创建工厂----Finish

6.src下新建接口cn.mldn.lxh.login6.dao,命名PersonDAO,写入代码如下:

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,类名DAOFactory

package 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>
   密&nbsp;&nbsp;码:<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&JSP

18.在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。运行框架。完成!!!

施杨出品!!!

分享到:
评论

相关推荐

    Struts2+Spring+Hibernate搭建全解!

    在压缩包文件`news-SSH2`中,可能包含了一些示例项目的源码,包括Struts2的配置文件、Action类、Spring的配置文件、Service和DAO实现,以及Hibernate的实体类和映射文件。通过学习和分析这些代码,开发者可以更深入...

    struts2+spring4+hibernate4工程搭建源码

    这个"struts2+spring4+hibernate4工程搭建源码"提供了使用这三个框架集成开发的示例代码,对于学习和理解它们的集成应用具有重要的参考价值。 Struts2是Apache基金会的一个开源项目,作为MVC框架,它主要用于处理...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...

    struts+hibernate+spring源码

    总的来说,这份"Struts+Hibernate+Spring源码"集合是一份宝贵的资源,它提供了深入学习和研究这些框架的机会,对提升Java开发者的技术水平大有裨益。通过深入源码,不仅可以掌握框架的基本用法,还能理解其设计理念...

    Spring + Struts +Hibernate简单学习源码

    在"Spring + Struts +Hibernate简单学习源码"中,我们可以看到一个综合性的Java Web项目,它利用这三个框架构建了一个功能完整的应用。以下是对这个项目中涉及的知识点的详细解释: 1. **Spring框架**: - **依赖...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    这里我们关注的是一个经典的Java EE框架组合——Struts1.2、Spring2.5和Hibernate3.2的集成搭建。这个组合在过去的开发实践中被广泛采用,它们各自负责不同的职责,共同构建出强大的后端架构。 Struts1.2是MVC...

    网上图书系统(Struts+Hibernate+Jsp)

    在文件"bookstore"中,可能包含了系统的主要源代码和配置文件,如Action类、DAO(Data Access Object)类、实体类、JSP页面、Struts和Hibernate的配置文件等。这些文件共同构成了网上图书系统的功能模块,实现了图书...

    struts+spring+hibernate

    整合过程包括配置各个框架的XML配置文件,如Struts的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml,以及创建对应的Action、Service、DAO层。 整合SSH的优点在于: 1. **模块化**:...

    struts+spring+hibernate(mysql)用户登录及文件上传

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...

    Spring+struts+hibernate经典注册

    Spring、Struts和Hibernate是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出功能强大且架构清晰的企业级应用。在这个“Spring+Struts+Hibernate经典注册”项目中,我们将深入探讨这三个框架如何...

    整合spring4+struts2+hibernate4项目源码

    这个项目源码提供了这样一个集成实例,名为"整合spring4+struts2+hibernate4项目源码",它展示了如何将这三个框架无缝结合在一起,以实现高效的业务逻辑处理和数据持久化。前端部分则采用了Bootstrap框架,提供了...

    整合Struts+Spring+Hibernate简单例子开发

    在Struts和Hibernate的整合中,Spring主要作为容器管理它们,包括Action对象和数据访问对象(DAO)。Spring的IoC容器可以轻松地管理和配置其他框架的组件,使得整个应用的耦合度降低。 **Hibernate框架**是一个强大...

    Struts+Spring+Hibernate开发入行真功夫源码

    Struts、Spring和Hibernate是Java Web开发中的三大框架,它们的组合被称为SSH(Struts、Spring、Hibernate)架构。这个组合被广泛应用于构建企业级应用,因为它提供了模型-视图-控制器(MVC)设计模式的支持,事务...

    Struts2 + Spring + Hibernate + DWR 项目布署笔记

    "Struts2 + Spring + Hibernate + DWR"是一个常见的Java Web开发框架组合,用于构建动态、数据驱动的Web应用程序。这个项目部署笔记将深入探讨这四个组件的核心功能以及它们如何协同工作。 首先,Struts2是一个基于...

    JSP源码——车辆管理系统(struts+hibernate+spring+oracle).zip

    这是一个基于Java技术栈的车辆管理系统源码,使用了经典的SSH框架(Struts、Hibernate和Spring)结合Oracle数据库进行开发。SSH框架是Java Web开发中常用的技术组合,它们各自承担着不同的职责,共同构建了一个功能...

    轻量级Java+EE企业应用实战——Struts+2+Spring+Hibernate整合开发电子书3.pdf

    1. 搭建集成环境:介绍如何配置Struts 2、Spring和Hibernate的项目结构,以及相关的XML配置文件,如struts.xml、spring-context.xml和hibernate.cfg.xml。 2. 实现数据持久化:讲解如何使用Hibernate的注解或XML配置...

    struts2+spring2.5+Hibernate3.2整合示例

    同时,通过阅读源码,可以提升对Spring、Struts2和Hibernate的掌握程度,为实际项目开发打下坚实基础。 以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的...

    JAVA spring+struts+hibernate开发的留言板

    Spring、Struts和Hibernate是Java开发中的三个重要框架,它们分别解决了不同的问题,共同构建了一个强大的后端开发架构。本项目"JAVA spring+struts+hibernate开发的留言板"便是这种经典组合的应用实例。 Spring...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...

Global site tag (gtag.js) - Google Analytics