<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;
}
}