Struts2和Hibernate实现的注册登录模块

本文是Sruts2初学后的一个小练习,实现了一个简单的注册登录模块的功能。本文可供Struts2初学者的参考,看完本文后你会觉得Struts2比Struts1.x简单易学,容易上手,更为重要的是使得Web开发更加简单了。写到此突然更加的佩服那些架构和开发Struts2的开发人员,以及Apache软件基金组织。

1.开发环境:NeatbBeans 6.5.1 JDK1.6 Tomcat 6 Windows XP Professional SP2 离线博客书写工具:Zoudry Blog Writer

2.首先写一个User类,属性有username和password;原代码如下:

public class User {
private long ID;
private String username;
private String password;

public User(String username,String password){
this.username = username;
this.password = password;
}
public User(){}

public long getID() {
return ID;
}

public void setID(long ID) {
this.ID = ID;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

}

3.配置User类的映射文件:User.hbm.xml











4.写一个Connection类,负责创建Session;

public class Connection {

public static SessionFactory sessionfactory;

static {
try {
Configuration config = new Configuration().configure();
sessionfactory = config.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}

public static Session getSession() {
try {
Session session = sessionfactory.openSession();
return session;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

public static void closeConnection(){
sessionfactory.close();
}
}

5.实现一个UserDAO类,实现具体的数据库操作;

public class UserDAO {

private User user;

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public static boolean Add(User user) {
user.setID(getNextID());
Session session=null;
Transaction tx=null;
try {
session = Connection.getSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
return true;
} catch (Exception e) {
tx.rollback();
System.out.println("注册失败");
e.printStackTrace();
return false;
}finally{
session.close();
Connection.closeConnection();
}

}

public static boolean registerValidate(String username){
boolean conflict_flag;
Session session = Connection.getSession();
String hql = "select u.username from User u where u.username=?";
Query query = session.createQuery(hql);
query.setString(0, username);
List list = query.list();
if (list.size()>0 ) {
conflict_flag=true;
return conflict_flag;
}else{
conflict_flag = false;
return conflict_flag;
}
}

public static List select(User user){
String sql = "select u from User as u ";
Session session = Connection.getSession();
Query query = session.createQuery(sql);
List list = query.list();
return list;
}

public static boolean loginValidate(String name,String pswd){
Session session = Connection.getSession();
String hql = "select u from User as u where u.username=? and u.password=?";
Query query = session.createQuery(hql);
query.setString(0,name);
query.setString(1,pswd);
List list = query.list();
if (list.size()>0)
return true;
else
return false;

}

public static long getNextID(){
Session session = Connection.getSession();
String sql = "select max(ID) from User";
Query query = session.createQuery(sql);
List list = query.list();
long nextID = list.get(0)+1;
return nextID;
}
}

6.Action类及其数据校验文件:

Login.java 文件如下:

public class Login extends ActionSupport {

String username;
String password;

@Override
public String execute() {
boolean flag = UserDAO.loginValidate(getUsername(), getPassword());
if (flag) {
return SUCCESS;
}
else {
return "error";
}

}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

}

Login-validation.xml文件如下:


"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">




请输入你的登录用户名!





请输入有效的用户名,用户名只能是数字和字母,且长度在6-16之间!




请输入你的登录密码





请输入有效的密码,密码只能是数字和字母,且长度在6-16之间!


7.Register类及其数据验证文件:

public class Register extends ActionSupport {

private String username;
private String password;
private String password2;

public String getPassword2() {
return password2;
}

public void setPassword2(String password2) {
this.password2 = password2;
}

@Override
public String execute() throws Exception {
boolean accept = !UserDAO.registerValidate(getUsername());
if (accept) {
User u = new User(getUsername(), getPassword());
boolean flag = UserDAO.Add(u);
if (flag) {
return "success";
} else {
return "error";
}
} else {
return "refuse";
}

}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}
}

Register-validation.xml文件如下:


"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">




请输入你要注册的用户名!





请输入有效的用户名,用户名只能是数字和字母,且长度在6-16之间!




请输入你的登录密码






请输入有效的密码,密码只能是数字和字母,且长度在6-16之间!




请再次确认密码





请输入有效的密码,密码只能是数字和字母,且长度在6-16之间!





两次密码不一致


8.login.jsp和register.jsp文件
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>




欢迎登录






用户名:
密 码:
  
注册




<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>




注册





用户名:
密 码:
确认密码:



9.登陆成功以及注册成功的jsp页面;

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>




登录成功


欢迎你回来,



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
"http://www.w3.org/TR/html4/loose.dtd">




注册成功


欢迎新用户的加入!



9.登录失败以及注册失败的JSP页面:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
"http://www.w3.org/TR/html4/loose.dtd">




登录失败


登录失败,您还不是注册用户!返回注册



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
"http://www.w3.org/TR/html4/loose.dtd">




注册失败


注册失败,该用户已存在,请重新注册



10:配置Struts.xml文件






demo.xml文件如下:

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">


login.jsp
loginsuccess.jsp
loginerror.jsp



register.jsp
regsuccess.jsp
regerror.jsp
regerror.jsp




11.配置web.xml文件:


struts2
org.apache.struts2.dispatcher.FilterDispatcher


struts2
/*



30



demo/login.jsp


参考来源:http://hiro.iteye.com/blog/420476

你可能感兴趣的:(程序学习)