`
lijunaccp
  • 浏览: 160488 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2整合Hibernate

阅读更多
1. 准备条件:
1.1 在MYSQL中创建hibernate数据库,创建person表
1.2 创建hibernate工程,导入struts2,hibernate3.3,mysql驱动包。
2. hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
    	<property name="format_sql">true</property>
    	<property name="show_sql">true</property>
    	<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
    	<property name="hibernate.connection.username">root</property>
    	<property name="hibernate.connection.password">root</property>
    	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    	<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    	
    	<mapping resource="person.hbm.xml" />
    </session-factory>

</hibernate-configuration>

3. Person.java
package com.hibernate.model;

import java.sql.Date;

public class Person {

	private Integer id;
	private String username;
	private String password;
	private Integer age;
	private Date registerdate;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getRegisterdate() {
		return registerdate;
	}
	public void setRegisterdate(Date registerdate) {
		this.registerdate = registerdate;
	}
}

4. 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" >
<hibernate-mapping>
	<class name="com.hibernate.model.Person" table="person">
		<id name="id" column="id" type="integer">
			<generator class="increment"></generator>
		</id>
		<property name="username" column="username" type="string"></property>
		<property name="password" column="password" type="string"></property>
		<property name="age" column="age" type="integer"></property>
		<property name="registerdate" column="registerdate" type="date"></property>
	</class>
</hibernate-mapping>

5. HibernateUtil.java
package com.hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	private static SessionFactory sessionFactory;
	
	//静态代码块(类加载就执行)
	static{
		try{
			sessionFactory=new Configuration().configure().buildSessionFactory();
		}catch(Exception ex){
			System.out.println("创建sessionFactory时出错");
		}
	}
	
	//获得Session
	public static Session getSession(){
		Session session=sessionFactory.openSession();
		return session;
	}
	
	//关闭session
	public static void closeSession(Session session){
		if(session!=null){
			session.close();
		}
	}
}

6. DBPerson.java
package com.hibernate.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.hibernate.model.Person;
import com.hibernate.util.HibernateUtil;

public class DBPerson {
	
	/**
	 * 保存
	 * @param bean
	 */
	public static void save(Person bean){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try{
			tx=session.beginTransaction();
			session.save(bean);
			tx.commit();
		}catch(Exception ex){
			System.out.println("保存数据时出错");
			if(tx!=null){
				tx.rollback();
			}
		}finally{
			HibernateUtil.closeSession(session);
		}
	}
	
	/**
	 * 查询所有
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static List<Person> getAllPerson(){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		String hql="from Person";
		List<Person> list=null;
		try{
			tx=session.beginTransaction();
			Query query=session.createQuery(hql);
			list=(List<Person>)query.list();
			tx.commit();
		}catch(Exception ex){
			System.out.println("查询数据时出错");
			if(tx!=null){
				tx.rollback();
			}
		}finally{
			HibernateUtil.closeSession(session);
		}
		
		return list;
	}
	
	/**
	 * 根据ID获得一条记录
	 * @param id
	 * @return
	 */
	public static Person getPersonById(Integer id){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		Person person=null;
		try{
			tx=session.beginTransaction();
			person=(Person)session.get(Person.class, id);
			tx.commit();
		}catch(Exception ex){
			System.out.println("查询单条数据时出错");
			if(tx!=null){
				tx.rollback();
			}
		}finally{
			HibernateUtil.closeSession(session);
		}
		
		return person;
	}
	
	/**
	 * 删除
	 * @param bean
	 */
	public static void delPerson(Person bean){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try{
			tx=session.beginTransaction();
			session.delete(bean);
			tx.commit();
		}catch(Exception ex){
			System.out.println("删除数据时出错");
			if(tx!=null){
				tx.rollback();
			}
		}finally{
			HibernateUtil.closeSession(session);
		}
	}
	
	/**
	 * 修改
	 */
	public static void updatePerson(Person bean){
		Session session=HibernateUtil.getSession();
		Transaction tx=null;
		try{
			tx=session.beginTransaction();
			session.update(bean);
			tx.commit();
		}catch(Exception ex){
			System.out.println("更新数据时出错");
			if(tx!=null){
				tx.rollback();
			}
		}finally{
			HibernateUtil.closeSession(session);
		}
	}
}

7. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
		<filter>
			<filter-name>struts2</filter-name>
			<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		</filter>
		
		<filter-mapping>
			<filter-name>struts2</filter-name>
			<url-pattern>*.action</url-pattern>
		</filter-mapping>
</web-app>

8. 配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="hibernate" extends="struts-default">
		<action name="save" class="com.hibernate.action.PersionAction" method="save" >
			<result name="success">/listAll.jsp</result>
		</action>
		<action name="getPerson" class="com.hibernate.action.PersionAction" method="getPerson" >
			<result name="success">/getPerson.jsp</result>
		</action>
		<action name="updatePerson" class="com.hibernate.action.PersionAction" method="getPerson" >
			<result name="success">/updatePerson.jsp</result>
		</action>
		<action name="doUpdatePerson" class="com.hibernate.action.PersionAction" method="updatePerson" >
			<result name="success">/listAll.jsp</result>
		</action>
		<action name="deletePerson" class="com.hibernate.action.PersionAction" method="deletePerson" >
			<result name="success">/listAll.jsp</result>
		</action>
	</package>
</struts>

9. PersonAction.java
package com.hibernate.action;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.hibernate.dao.DBPerson;
import com.hibernate.model.Person;
import com.opensymphony.xwork2.ActionSupport;

public class PersionAction extends ActionSupport {

	private Integer id;
	private String username;
	private String password;
	private Integer age;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	public String save() throws Exception {
		Person person=new Person();
		person.setUsername(username);
		person.setPassword(password);
		person.setAge(age);
		java.sql.Date registerdate=new java.sql.Date(new java.util.Date().getTime());
		person.setRegisterdate(registerdate);
		
		DBPerson.save(person);
		
		List<Person> list=DBPerson.getAllPerson();
		
		ServletActionContext.getRequest().setAttribute("list", list);
		
		return SUCCESS;
	}
	
	public String getPerson() throws Exception {
		Person person=DBPerson.getPersonById(id);
		
		ServletActionContext.getRequest().setAttribute("person", person);
		
		return SUCCESS;
	}
	
	public String updatePerson() throws Exception {
		Person person=DBPerson.getPersonById(id);

		person.setPassword(password);
		person.setAge(age);
		
		DBPerson.updatePerson(person);
		
		List<Person> list=DBPerson.getAllPerson();
		
		ServletActionContext.getRequest().setAttribute("list", list);
		
		return SUCCESS;
	}
	
	public String deletePerson() throws Exception {
		Person person=DBPerson.getPersonById(id);
		
		DBPerson.delPerson(person);
		
		List<Person> list=DBPerson.getAllPerson();
		
		ServletActionContext.getRequest().setAttribute("list", list);
		
		return SUCCESS;
	}
}

10.  register.jsp
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册</title>
</head>
<body>
	<form action="save.action" method=”post”>
		<table  align="center">
			<tr>
				<td>用户名</td>
				<td><input type="text" name="username" /></td>
			</tr>
			<tr>
				<td>密码</td>
				<td><input type="password" name="password" /></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><input type="text" name="age" /></td>
			</tr>
			<tr>
				<td><input type="submit" value="submit" /></td>
				<td><input type="reset" value="reset" /></td>
			</tr>
		</table>
	</form>
</body>
</html>

11.  listAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示列表</title>
</head>
<body>
	<table border="1" align="center" cellpadding="5">
		<tr>
			<th>用户名</th>
			<th>密码</th>
			<th>年龄</th>
			<th>注册日期</th>
			<th>操作</th>
		</tr>
		<s:iterator value="#request.list" id="person" >
		<tr>
			<td>
			<s:a href="getPerson.action?id=%{#person.id}">
				<s:property value="username" />
			</s:a>
			</td>
			<td>
				<s:property value="password" />
			</td>
			<td>
				<s:property value="age" />
			</td>
			<td>
				<s:property value="registerdate" />
			</td>
			<td>
			<s:a href="updatePerson.action?id=%{#person.id}">
				更新
			</s:a>
			<s:a href="deletePerson.action?id=%{#person.id}">
				删除
			</s:a>
			</td>
		</tr>
		</s:iterator>
	</table>
</body>
</html>

12.  getPerson.jsp
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table  align="center">
			<tr>
				<td>用户名</td>
				<td><s:property value="#request.person.username" /></td>
			</tr>
			<tr>
				<td>密码</td>
				<td><s:property value="#request.person.password" /></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><s:property value="#request.person.age" /></td>
			</tr>
			<tr>
				<td>注册日期</td>
				<td><s:property value="#request.person.registerdate" /></td>
			</tr>
		</table>
</body>
</html>

13.  updatePerson.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doUpdatePerson.action" method="post">
	<s:hidden name="id" value="%{#request.person.id}"></s:hidden>
		<table  align="center">
			<tr>
				<td>用户名</td>
				<td><s:property value="#request.person.username" /></td>
			</tr>
			<tr>
				<td>密码</td>
				<td><s:password name="password" value="%{#request.person.password}"></s:password></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><s:textfield name="age" value="%{#request.person.age}" ></s:textfield></td>
			</tr>
			<tr>
				<td>注册日期</td>
				<td><s:property value="#request.person.registerdate" /></td>
			</tr>
			<tr>
				<td><input type="submit" value="submit" /></td>
				<td><input type="reset" value="reset" /></td>
			</tr>
		</table>
	</form>
</body>
</html>
分享到:
评论
2 楼 lijunaccp 2012-08-20  
大红鸡翅膀 写道
struts.xml 里面配置的貌似有问题吧?

有什么问题还请明确指出。
1 楼 大红鸡翅膀 2012-08-18  
struts.xml 里面配置的貌似有问题吧?

相关推荐

    struts2整合hibernate

    整合Struts2和Hibernate的主要目的是实现数据访问层(DAO)与控制层的无缝对接,提供一个统一的、高效的数据管理平台。以下是一些整合的关键步骤和知识点: 1. **配置环境**:确保系统中已经安装了Struts2和...

    struts2与Hibernate整合

    **Struts2整合Hibernate**的核心目标是将这两者结合起来,实现业务逻辑层和数据访问层的高效协同工作。在本实例中,我们将使用Eclipse作为开发环境,Tomcat6.0作为应用服务器,MySQL作为数据库系统。以下是对这个...

    struts2整合hibernate的网上银行模拟项目

    这个“struts2整合hibernate的网上银行模拟项目”结合了这两个框架,创建了一个模拟的网上银行系统,旨在展示如何在实际项目中使用它们。 首先,让我们深入了解一下Struts2。Struts2 是 Struts 的下一代,它继承了...

    Struts2整合hibernate的步骤.txt

    ### Struts2整合Hibernate的步骤 #### 一、概述 在Java Web开发中,Struts2与Hibernate都是非常重要的框架。Struts2是一个基于MVC设计模式的Web应用框架,而Hibernate则是一个对象关系映射(ORM)框架。将两者进行...

    .Struts2整合Hibernate深入详解

    《Struts2整合Hibernate深入详解》是一篇针对Java开发者的重要教程,主要探讨如何在Web应用程序中有效地结合两个流行的技术框架——Struts2和Hibernate。Struts2是一个强大的MVC(Model-View-Controller)框架,提供...

    Struts 2整合Hibernate开发.rar

    在"第18章 Struts 2整合Hibernate开发.ppt"中,我们可能会学习到以下几个核心知识点: 1. **Struts 2基础**:首先会介绍Struts 2的基本概念,包括Action、Result、Interceptor等核心组件,以及配置文件struts.xml的...

    Struts2整合hibernate所需的jar包

    下面我们将详细讨论Struts2整合Hibernate所需的核心jar包以及整合过程中的关键知识点。 1. **核心jar包解析:** - **Struts2框架**: - `struts2-core.jar`:Struts2框架的核心库,包含Action、Interceptor等主要...

    struts2整合hibernate3.1演示例子

    在"struts2整合hibernate3.1演示例子"中,我们将探讨如何将这两个框架协同工作,实现数据的CRUD(Create, Read, Update, Delete)操作。Hibernate3.1版本提供了许多改进,如增强的性能和新的API,使得与Struts2集成...

    Struts2Hibernate整合jar包

    Struts2Hibernate整合jar包,直接放进工程里用就可以了,不少东西

    struts2整合hibernate的网上商城源码

    Struts2 和 Hibernate 是两种非常流行的开源框架,它们在...通过分析这个源码,开发者不仅可以学习到如何整合Struts2和Hibernate,还可以深入了解MVC架构以及Java Web开发的基本流程。这有助于提升实际项目开发能力。

    Struts2整合Hibernate32开发注册登录系统.pdf

    Struts2整合Hibernate32开发注册登录系统

    开发者突击 Struts2整合Hibernate

    整合Struts2和Hibernate的主要目的是为了让Web应用的控制层(Struts2)能够便捷地访问持久层(Hibernate)。以下是一些关键步骤: 1. **配置Struts2** 首先,需要在项目的`web.xml`中配置Struts2的前端控制器`...

    Struts2+hibernate整合

    1. **Struts2整合Hibernate**:整合过程通常包括配置Struts2的Action类以调用Hibernate的服务,如Session工厂、Session和Transaction。在struts.xml配置文件中,需要定义Action的类名和方法,以及对应的URL映射。...

    struts2整合hibernate3实现用户登录

    本DEMO实现用户登录功能,采用MVC思想,自己也觉得这个相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰的看出整个项目工程的数据流向和设计思想,是新手对于整合struts2和hibernate的...

    struts2与hibernate的整合实现数据的crud

    首先,整合Struts2和Hibernate的基本步骤包括: 1. **添加依赖**:在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中,添加Struts2和Hibernate的库依赖。 2. **配置Struts2**:在struts.xml配置文件...

    struts2和hibernate整合

    **Struts2整合Hibernate的核心概念:** 1. **Action和ActionSupport**:在Struts2中,业务逻辑通常封装在Action类中。`ActionSupport`是Struts2提供的一种基础Action类,包含了默认的校验和国际化支持。 2. **...

    struts2和hibernate整合,包含分页

    **Struts2整合Hibernate的关键步骤:** 1. **配置环境**:首先,确保你的项目中包含了Struts2和Hibernate的库文件,如struts2-core、hibernate-core以及相应的依赖库。 2. **创建实体类**:在Hibernate中,你需要...

Global site tag (gtag.js) - Google Analytics