本文主要是介绍Struts2 + Hibernate实现用户登陆功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先建立项目,根据需要加入框架支持。
先加入Hibernate:
再加入Struts2:
支持加入后,先建立一张用户表。
CREATE TABLE T_User ( |
根据表,生成映射:
生成映射后,根据需要,完成DAO的方法:
public class TUserDAOImpl implements ITUserDAO {
public boolean isLogin(TUser user) throws Exception { String hql = "FROM TUser AS u WHERE u.userid = ? AND u.password = ?"; Query query = HibernateSessionFactory.getSession().createQuery(hql); query.setString(0, user.getUserid()); query.setString(1, user.getPassword()); List<User> allUser = query.list(); if (allUser != null && allUser.size() > 0) { // 登陆成功 // 取得查询的结果 TUser result = (TUser) allUser.get(0); // 根据引用传递,将值设置到传入的user中 user.setRealName(result.getRealName()); user.setRegistDate(result.getRegistDate()); user.setLastLoginDate(result.getLastLoginDate());
return true; }
return false; }
} |
再实现Service以及工厂的代码。
后台代码实现后,开始编写前台Struts操作代码。
导入Struts2标签库,完成表单
<%@ taglib uri="/struts-tags" prefix="s"%> |
表单可以使用普通标签,也可以使用Struts2标签
<center> <form action="tuser!login.action" method="post"> 用户名:<input type="text" name="tuser.userid"/> <br/> 密码:<input type="password" name="tuser.password"/> <br/> <input type="submit" value="提交" /> </form>
<br/> <hr/> <br/>
<s:form action="tuser!login" namespace="/" method="post" theme="simple"> 用户名:<s:textfield name="tuser.userid"></s:textfield> <br/> 密码:<s:password name="tuser.password"></s:password> <br/> <s:submit value="提交"></s:submit> </s:form> </center> |
编写Action类,完成验证的操作。
public class TUserAction extends ActionSupport {
private TUser tuser;
public TUser getTuser() { return tuser; }
public void setTuser(TUser tuser) { this.tuser = tuser; }
public String login() throws Exception { boolean flag = ServiceFactory.getITUserServiceInstance().login(tuser);
// 根据结果,决定跳转的位置 if (flag) { // 将用户保存到session属性范围中 ServletActionContext.getRequest().getSession().setAttribute("user", tuser);
return "suc"; }
// 添加错误信息,页面使用标签显示 super.addActionError("用户名或密码错误,请重新输入!");
return "input";
}
} |
配置这个Action,在struts.xml中完成。
<struts>
<package name="root" namespace="/" extends="struts-default"> <action name="tuser" class="org.liky.login.action.TUserAction"> <result name="suc">/pages/suc.jsp</result> <result name="input">/index.jsp</result> </action> </package>
</struts>
|
完成suc.jsp中显示用户信息的功能
<center> 用户登陆成功,当前登陆用户为: ${user.userid} </center> |
在index.jsp中提示错误信息
<font color="red"> <s:actionerror/> </font> <br/> |
测试项目,会提示以下错误信息。
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I |
这种错误是由于项目中加入了多个版本的支持jar包,各个版本之间有相同的类,但方法不同,造成冲突。
这里的冲突jar包是Struts2加入的2.7.2.jar造成的,需要将该包删除,该包是MyEclipse工具提供的,因此需要通过MyEclip-se的操作来删除,无法直接删除。
这篇关于Struts2 + Hibernate实现用户登陆功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!