Hibernate+Struts2实现简单登录注册

<session-factory>
	<property name="connection.username">root</property>
	<property name="connection.url">
		jdbc:mysql://localhost:3306/test
	</property>
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<property name="myeclipse.connection.profile">MySQL</property>
	<property name="connection.password">root</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	
	<mapping resource="com/lian/bean/User.hbm.xml" />

</session-factory>
<struts>
	<include file="struts-default.xml" />
	<package name="default" extends="struts-default">
		<action name="login" class="com.lian.action.LoginAction">
			<interceptor-ref name="defaultStack" />
			<result name="success">/success.jsp</result>
			<result name="error">error.jsp</result>
		</action>
		
		<action name="register" class="com.lian.action.RegisterAction">
			<interceptor-ref name="validationWorkflowStack" />
			<result name="success">success.jsp</result>
			<result name="error">error.jsp</result>
			<result name="input">register.jsp</result>
		</action>
        
	</package>
</struts>
<filter>
		<filter-name>struts-cleanup</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ActionContextCleanUp
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts-cleanup</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
package com.lian.util;

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

public class HibernateUtil {
	private static SessionFactory sessionFactory;
	public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
	
	static {	
		try {
			sessionFactory = new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	/*
	 * 获得当前session
	 */
	public static Session getSession() throws HibernateException {
		Session s = (Session) session.get();
		if(s ==null || !s.isOpen()){
			s = sessionFactory.openSession();
			session.set(s);
		}
		return s;	
	}
	
	/*
	 * 回滚
	 */
	public static void rollback(Transaction tx) {
		try {
			if(tx != null) {
				tx.rollback();
			}
		} catch (HibernateException e) {
			System.out.println("rollback faild." + e);
		}
	}
	
	/*
	 * 关闭session
	 */
	public static void closeSession() throws HibernateException {
		Session s = session.get();
		session.set(null);
		if(s != null) {
			s.close();
		}
	}
	
}
package com.lian.dao;

import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.lian.bean.User;
import com.lian.util.HibernateUtil;

public class UserDao {

	private Session session;
	private Transaction tx;
	
	public UserDao() {
		session = HibernateUtil.getSession();
	}
	
	/*
	 * 将User对象插入到数据库中
	 * @param user
	 */
	public void create(User user) {
		try {
			tx = session.beginTransaction();
			session.save(user);
			tx.commit();
		} catch (HibernateException e) {
			HibernateUtil.rollback(tx);
		} finally {
			HibernateUtil.closeSession();
		}
	}
	
	public void delete(User user) {
		try {
			tx = session.beginTransaction();
			session.delete(user);
			tx.commit();
		} catch (HibernateException e) {
			HibernateUtil.rollback(tx);
		} finally {
			HibernateUtil.closeSession();
		}
	}
	
	public User find(int id) {
		User user = null;
		tx = session.beginTransaction();
		user = (User) session.get(User.class, id);
		tx.commit();
		HibernateUtil.closeSession();
		return user;	
	}
	
	public void update(User user) {
		tx = session.beginTransaction();
		session.update(user);
		tx.commit();
		HibernateUtil.closeSession();
	}
	
	public boolean check(User user) {
		tx = session.beginTransaction();
		String sql = "select u.password from User u where u.username='" +user.getUsername()+ "'";
		List list = session.createQuery(sql).list();
		if(!list.isEmpty()) {
			Iterator it = list.iterator();
			while(it.hasNext()) {
				String get = (String) it.next();
				System.out.println(get);
				if(get.equals(user.getPassword())) {
					HibernateUtil.closeSession();
					return true;
				}
			}
		}
		HibernateUtil.closeSession();
		return false;	
	}
	
	
}
<hibernate-mapping>
	<class name="com.lian.bean.User" table="users">
		<id name="id" column="id" type= "java.lang.Long">
			<generator class="native" />
		</id>
		<property name="username" column="username" type="java.lang.String" />
		<property name="password" column="password" type="java.lang.String" />
	</class>
</hibernate-mapping>
package com.lian.action;

import com.lian.bean.User;
import com.lian.dao.UserDao;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	private long id;
	private String username;
	private String password;
	
	@Override
	public String execute() throws Exception {
		UserDao userDao = new UserDao();
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		if(userDao.check(user)) {
			return SUCCESS;
		}
		return ERROR;
	}

	public long getId() {
		return id;
	}

	public void setId(long 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;
	}
	
}

猜你喜欢

转载自liangq.iteye.com/blog/1054746