struts2+hibernate4实现简单的注册登陆

struts2+hibernate4实现简单的注册登陆

struts2是一个mvc框架,hibernate是一个封装了jdbc的数据库框架,有了这2个我们就可以实现简单的业务了。本例模拟用户注册登录操作,只涉及一张user表

1.框架配置

这是所用到的struts和hibernate的jar包

struts2+hibernate4实现简单的注册登陆_第1张图片


这是所用到的几个jsp页面

struts2+hibernate4实现简单的注册登陆_第2张图片

web.xml的代码


    web1
    
        struts2
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
    
        struts2
        /*
    
    
        index.html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
    



hibernate.cfg.xml的代码:使用update在启动时根据配置更新数据库,就不要新建数据表了







    
    com.mysql.jdbc.Driver
    jdbc:mysql://localhost:3306/hibernate
    root
    123456
    
    5
        
    50    
       
    23   
    
    org.hibernate.dialect.MySQL5Dialect
    
    thread
    
    true
    
    update
    
    


struts.xml的代码:




    
        
          
              
                /WEB-INF/web/struts/login.jsp  
              
        
          
              
                /WEB-INF/web/struts/regist.jsp  
              
        
          
              
                /WEB-INF/web/struts/regist-success.jsp 
              
              
                /WEB-INF/web/struts/regist-error.jsp 
            
              
                /WEB-INF/web/struts/regist-error-other.jsp 
              
        
          
              
                /WEB-INF/web/struts/login-success.jsp 
              
              
                /WEB-INF/web/struts/login-error.jsp 
              
        
    


2 entity和dao的代码:

entity就是关系对象映射类
package com.my.entity;

import javax.persistence.*;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "user")
public class User {
	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	private int id;
	private String username;
	private String password;
	
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	
}

package com.my.dao;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
//import org.hibernate.cfg.AnnotationConfiguration;

import com.my.entity.User;;

public class UserDao {
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;
	
	public void init(){
		Configuration cfg = new Configuration().configure();
		SessionFactory sessionFactory = cfg.buildSessionFactory();
		session = sessionFactory.openSession();
		transaction = session.beginTransaction();
	}
	
	public Session getSession(){
		init();
		return session;
	}
	
	public Transaction getTransaction(){
		return transaction;
	}
	
	public void closeSession(){
		session.close();
	}
	
	public List search(String hql) {
        Session session = null;
        session = getSession();
        List alist = null;
        alist = session.createQuery(hql).list();
        session.close();
        return alist;
    }
	
	public void insert(User user){
		init();
		User newUser = new User();
		newUser.setPassword(user.getPassword());
		newUser.setUsername(user.getUsername());
		session.save(newUser);
		transaction.commit();
		session.close();
	}
}


3.action的代码

这个就是controller,负责控制页面跳转

登陆的action,LoginAction的代码:
package com.my.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.my.dao.UserDao;

public class LoginAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
    private String username;//账号
    private String password;//密码
    private UserDao userDao = new UserDao();
    
    //getters & setters
    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;
    }
    
    /**
     * execute方法会在该Action类被调用的时候自动执行,
     * 如果 账号="admin"并且密码="123456",就返回SUCCESS
     * 否则返回ERROR
     */
    public String execute(){
    	String hql = "select username,password from User where username = '" + username + "' and password = '" + password + "'";
    	List user = userDao.search(hql);
    	if(user != null && user.size() != 0){
    		return "success";
    	}else{
    		return "error";
    	}
    }
}

注册action,RegisterAction的代码:
package com.my.action;

import java.util.List;
import com.opensymphony.xwork2.ActionSupport;

import com.my.dao.UserDao;
import com.my.entity.User;

public class RegistAction extends ActionSupport {
	private static final long serialVersionUID = 2L;
    private String username;//账号
    private String password;//密码
    
    //getters & setters
    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;
    }
    
    /**
     * execute方法会在该Action类被调用的时候自动执行,
     * 查询数据库,若账号已存在,返回error
     * 若账号不存在插入数据库,返回success
     */
    public String execute(){
    	//String username = this.getPassword();
    	//String password = this.getUsername();
    	UserDao userDao = new UserDao();
    	String hql = "from User where username = '" + username + "'";
    	List user = userDao.search(hql);
		if(user == null || user.size() == 0){
			User newUser = new User();
			newUser.setUsername(username);
			newUser.setPassword(password);
			userDao.insert(newUser);
			return "success";
		}else{
			User a = (User)user.get(0);
			System.out.println(a.getUsername());
			return "error";
		}
    }
}


4.前台jsp页面代码

login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    登录
  
  
  
  
登录
账号:
密码:

login-success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>



  
    登陆成功
  
  
  
    欢迎,登录成功!


login-error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    登录失败
  
  
  
    登录失败!用户名或密码错误!
  


register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    注册
  
  
  
  
注册
账号:
密码:


register-success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>



  
    注册成功
  
  
  
  欢迎,注册成功!
现在登陆>>


register-error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    注册失败
  
  
  
    注册失败!该用户名已被使用!
  


你可能感兴趣的:(java)