Struts 2+Hibernate实现完整登录注册
环境
MyEclipse 2014
数据库:SQL sever 2016
Tomcat:apache-tomcat-8.0.46
JDK:1.6
Sturts版本:2.1
Hibernate版本:4.1
前期准备
创建项目以后,为项目添加
Sturts
和Hibernate
能力连接数据库并生成POJO类:Hibernate框架连接SQL sever 2016完整详细步骤
还有一个一定会出错的地方,因为Hibernate和Struts 2 中有相同的包(版本不同)会引起冲突,所以要把Struts 2 中的
antlr-2.7.2.jar
移除,具体操作可以看这篇:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I最终解决方案
登录功能
1.先编写对数据库进行操作的DAO类UserInfoDao.java
public class UserInfoDao {
private Session session;
private Transaction t;
public void getCurrentSession(){
session=HibernateSessionFactory.getSession();
}
public void closeSession(){
if(session!=null){
HibernateSessionFactory.closeSession();
}
}
/**
* 登录函数:验证用户名和密码
* @param vo
* @return true 存在
* @return false 不存在
*/
public boolean loginByUserInfo(UserInfo vo){
getCurrentSession();
t=session.beginTransaction();
String userAccount = vo.getUserAccount();
String userPassword = vo.getUserPassword();
Query query = session.createQuery("from UserInfo where userAccount='"+userAccount+"' and userPassword='"+userPassword+"'");
List list=query.list();
closeSession();
if(list!=null)
return true;
return false;
}
}
2.LoginAction.java
package org.action;
import java.util.Map;
import org.dao.UserInfoDao;
import org.vo.UserInfo;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private UserInfo userInfo;
private String message; //用于显示验证错误信息
/**
* 处理用户请求的 execute 方法
* 因为此函数在 validate()后执行,所以可以保证用户名和密码正确
* @return SUCCESS
*/
public String execute() throws Exception{
Map<String,Object> session = ActionContext.getContext().getSession();
session.put("userInfo", userInfo);
return SUCCESS;
}
/**
* 验证用户名和密码
* 先判断是否为空,再验证
*/
public void validate(){
if(userInfo.getUserAccount()==null || userInfo.getUserAccount().equals(""))
this.addFieldError("userAccount", "用户名不能为空");
else if(userInfo.getUserPassword()==null || userInfo.getUserPassword().equals(""))
this.addFieldError("userPassword", "密码不能为空");
else {
UserInfoDao dao = new