使用jQuery、JackSon实现和MVC模式实现用户注册

首先,看一下用户注册架构设计

M层:Users类,IUsersDao类,UsersDao类,DaoFactory类,DBFactory类

V层:register.jsp admin.jsp

C层:UserManagAction类

降低控制器与业务逻辑的耦合性,从而优化了代码结构


数据表users的设计


Users类

public class Users {
    private String username;	//用户名
    private String password;	 //密码
    private String sex;	 //性别
    private String prof;	 //职业
    private String addr;	 //地址
    private String tel;	 	//电话
    private String pcode;	 //邮编
    public Users() { super();  }
    public Users(String username, String password) {
this.username = username;
this.password = password;
   }
    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;
	}
	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getProf() {
		return prof;
	}

	public void setProf(String prof) {
		this.prof = prof;
	}
	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getPcode() {
		return pcode;
	}

	public void setPcode(String pcode) {
		this.pcode = pcode;
	}
	
    public Users(String username, String password, String sex, String prof,String addr, String tel, String pcode) {
    	this.username = username;
    	this.password = password;
    	this.sex = sex;
    	this.prof = prof;
    	this.addr = addr;
    	this.tel = tel;
    	this.pcode = pcode;
            }
    
    } 

DaoFactory类

import beans.Users;
public class DaoFactory{
    public static DaoFactory INSTANCE;
    static {
	INSTANCE = new DaoFactory();
    }
    public DaoFactory() {    super();   }
  //用户登录
    public Users login(String username, String password) {
	return new UsersDao().getUser(username, password);
    }
    //按照姓名查询
    public boolean findUserByName(String username) {
		return new UsersDao().getUserByName(username);
	}
    //用户注册
    public int regUser(Users user) {
	   return new UsersDao().addUser(user);
    }
}

IUsersDao类

import beans.Users;
public interface IUsersDao {
	public boolean getUserByName(String username);
	public int addUser(Users user);
}
UsersDao类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import beans.Users;
import utils.DBFactory;
public class UsersDao implements IUsersDao {
     public boolean getUserByName(String username) {
		boolean existed = false;
		Connection conn = null;
		try {
			conn = DBFactory.INSTANCE.getConnection();
			PreparedStatement ps = conn.prepareStatement("select username from users where username=?");
			ps.setString(1, username);
			ResultSet rs = ps.executeQuery();
			if (rs.next()) 
				existed = true;
			ps.close();
		} catch (SQLException e) {    e.printStackTrace();	} 
		finally {	DBFactory.INSTANCE.closeConn(conn);   }
		return existed;
	}
	public int addUser(Users user) {
        int tag = -1;//默认注册失败标志
        Connection conn = null;
        try {
	if (getUserByName(user.getUsername()))
		tag = 2;// 用户已经存在
	else {
		conn = DBFactory.INSTANCE.getConnection();
		String sql = "insert into users(username,password,sex,prof,addr,tel,pcode) values(?,?,?,?,?,?,?)";
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setString(1, user.getUsername());
		ps.setString(2, user.getPassword());
		ps.setString(3, user.getSex());
		ps.setString(4, user.getProf());
		ps.setString(5, user.getAddr());
		ps.setString(6, user.getTel());
		ps.setString(7, user.getPcode());
		//ps.executeUpdate();
		tag = ps.executeUpdate();
		//tag=1;
		ps.close();
		}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {	DBFactory.INSTANCE.closeConn(conn);	}
	return tag;
}

    public Users getUser(String username, String password) {
	Connection conn = null;
	Users user = null;
	try {
		conn = DBFactory.INSTANCE.getConnection();
		PreparedStatement ps = conn.prepareStatement("select username,password from users where username=? and password=?");
		ps.setString(1, username);
		ps.setString(2, password);
		ResultSet rs = ps.executeQuery();
		if (rs.next()) 
		    user = new Users(rs.getString(1), rs.getString(2));
		ps.close();
	     } catch (SQLException e) {
		   e.printStackTrace();
	     } finally {
	    	 DBFactory.INSTANCE.closeConn(conn);
	     }
	     return user;

}
	public void start() {
		// TODO Auto-generated method stub
		
	}}
UserManagerAction类(控制层)
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.Users;
import daos.DaoFactory;
@WebServlet("/userdo")
public class UserManagerAction extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	} 
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
	request.setCharacterEncoding("UTF-8");
	String desURL = "index.jsp";// 默认转发到主页
	
	//Users user=CommonUtils.toBean(request.getParameterMap(), Users.class);
	Users user = new Users();
	user.setUsername(request.getParameter("username"));
	user.setPassword(request.getParameter("password"));
	user.setSex(request.getParameter("sex"));
	user.setProf(request.getParameter("prof"));
	user.setAddr(request.getParameter("addr"));
	user.setTel(request.getParameter("tel"));
	user.setPcode(request.getParameter("pcode"));
	String doit = request.getParameter("do");
	if (doit != null) {
		if (doit.equals("ureg")) {
            int state = DaoFactory.INSTANCE.regUser(user);
			request.setAttribute("tag", state);
			desURL = "register.jsp";
		} else if (doit.equals("uin")) {
			if (DaoFactory.INSTANCE.login(user.getUsername(),user.getPassword()) != null)
				
				desURL = "index.jsp";
			else 
				desURL = "login.jsp";
		}
	}
	RequestDispatcher rd = request.getRequestDispatcher(desURL);
	rd.forward(request, response);
}
}
DBFactory类(连接数据库)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBFactory2 {
	private final String driver = "org.postgresql.Driver";
	private final String url = "jdbc:postgresql://localhost:5432/jspdb?useUnicode=true&characterEncoding=UTF-8";
	private final String user = "postgres";
	private final String password = "182085";
	public static DBFactory2 INSTANCE;
	static {
		INSTANCE = new DBFactory2();
}
	private DBFactory2() {	super();	}
	public Connection getConnection() {
	     Connection conn = null;
	     try {
		Class.forName(driver);
		conn = DriverManager.getConnection(url, user, password);
	     } catch (Exception e) { e.printStackTrace(); }
	     return conn;
  }

	  public void closeConn(Connection conn) {
	     try {
	if (conn != null) {  conn.close(); }
     } catch (SQLException e) {  e.printStackTrace();  }
  }
	  }

register.jsp

<style>
label {float:left;}
input[required]+label:after {
  content:'*';
  color:red;
  margin-right:5px;
}
</style>

</head>
<body>
<form name="register" method="post" action="userdo?do=ureg">
	<input type="text" name="username" required="required" οnkeyup="this.value=this.value.replace(/^ +| +$/g,'')">
	<label for="field">用户名:</label><br> 
	<input type="password" name="password" required="required" οnkeyup="this.value=this.value.replace(/^ +| +$/g,'')">
	
	<label for="field">密码  :</label><br> 
	性别  <input type="radio" name="sex" value="男" />男 
  	        <input type="radio" name="sex" value="女" />女<br> 
	职业<input type="text" name="prof"><br> 
	地址<input type="text" name="addr"><br>
	电话<input type="text" name="tel"><br> 
	邮编<input type="text" name="pcode"><br> 
	<input type="submit" value="注册"> 
    <input type="reset" value="重置">
</form>
<c:if test="${tag!=null}">
        <c:choose>
	<c:when test="${tag==2}">
	          <font style="color: #FF0000">待注册用户<b>【${param.username}】</b>已经存在!</font>
	</c:when>
	<c:when test="${tag==1}">
	          <font style="color: #FF0000">【${param.username}】注册成功!</font>
	</c:when>
	<c:when test="${tag==-1||user==0}">
	          <font style="color: #FF0000">注册失败!</font>
	</c:when>
        </c:choose>
</c:if>

</body>
</html>

login.jsp

<body>
<form name="register" method="post" action="userdo?do=uin">
用户名<input type="text" name="username" required="required" οnkeyup="this.value=this.value.replace(/^ +| +$/g,'')"><br> 
	密码<input type="password" name="password" required="required">
	<input type="submit" value="登陆"> 
	
	<input type="button" value="注册" οnclick="window.location.href='register.jsp'"> 
	</form>

<c:if test="${!empty param.username}">
          <font style="color: #FF0000">【${param.username}】用户名或密码错误!</font>
</c:if>
	

</body>

indes.jsp

<body>
欢迎来到主页
</body>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值