`
lijunaccp
  • 浏览: 153135 次
  • 性别: 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 里面配置的貌似有问题吧?

相关推荐

Global site tag (gtag.js) - Google Analytics