您的位置:首页 > Web前端 > JavaScript

JSP模式2 实现用户注册的功能

2011-11-02 15:16 393 查看
 
JSP模式2  实现用户注册的功能

一  实现的思路:

1.Register.jsp  

负责向用户显示注册的页面,用户名、密码、确认密码、email

2.ControllerServlet.java

用来接收客户端提交的请求,然后进行验证:语法格式的验证和该用户是否是已经存在的用户,如果该用户是合法的,将该用户加入到users表中,然后跳转到loginSuccess.jsp页面上,显示用户信息。否则跳转到register.jsp,将错误信息显示出来

3.RegisterFormBean.java:用来封装用户输入的表单的数据,并可以做基本语法格式的验证

4.UserBean.java :保存用户的信息,包括用户名、密码以及确认密码

5.DbUtil.java: 集合对象 user,<”zhangsan”,user>

              添加用户的方法  insertUser(User user)

6.自定义异常类---提示用户注册错误,写一个异常类 DbUtilException

二  实现的代码:

1.register.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
           + request.getServerName() + ":" + request.getServerPort()
           + path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
       <base href="<%=basePath%>">
 
       <title>My JSP 'register.jsp' starting page</title>
 
       <meta http-equiv="pragma" content="no-cache">
       <meta http-equiv="cache-control" content="no-cache">
       <meta http-equiv="expires" content="0">
       <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
       <meta http-equiv="description" content="This is my page">
       <!--
    <link rel="stylesheet" type="text/css"
href
="styles.css">
    -->
 
    </head>
 
    <body>
       <jsp:useBean id="registerForm" class="com.csdn.beans.RegisterFormBean"
           scope="request" />
       <jsp:setProperty property="*" name="registerForm" />
 
       <form action="registerServlet" method="post">
           <table>
              <tbody>
                  <tr>
                     <td>
                         用户名:
                     </td>
                     <td>
                         <input type="text" name="name" value="<%=registerForm.getName() %>"/>
                     </td>
                     <td>
                         <%=registerForm.getErrorMsg("name") %>
                     </td>
                  </tr>
                  <tr>
                     <td>
                         密  码:
                     </td>
                      <td>
                         <input type="password" name="password1" value="<%=registerForm.getPassword1()%>"/>
                     </td>
                     <td>
                         <%=registerForm.getErrorMsg("password1") %>
                     </td>
                  </tr>
                  <tr>
                     <td>
                         确认密码:
                     </td>
                     <td>
                         <input type="password" name="password2" value="<%=registerForm.getPassword2()%>"/>
                     </td>
                     <td>
                         <%=registerForm.getErrorMsg("password2") %>
                     </td>
                  </tr>
                  <tr>
                     <td>
                         email:
                     </td>
                     <td>
                         <input type="text" name="email" value="<%=registerForm.getEmail()%>"/>
                     </td>
                     <td>
                         <%=registerForm.getErrorMsg("email") %>
                     </td>
                  </tr>
                  <tr>
                     <td>
                         <input type="submit" name="submit" value="注册" />
                     </td>
                     <td>
                          
                     </td>
                     <td>
                          
                     </td>
                  </tr>
              </tbody>
           </table>
       </form>
    </body>
</html>
 

2.ControllerServlet.java

    public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      
       RequestDispatcher rd = null;
 
       //控制器
       //获取表单提交的数据封装在registerFormBean对象中,进行语法格式的验证
       RegisterFormBean registerForm = new RegisterFormBean();
       request.setAttribute("registerForm", registerForm);
       registerForm.setName(request.getParameter("name"));
       registerForm.setPassword1(request.getParameter("password1"));
       registerForm.setPassword2(request.getParameter("password2"));
       registerForm.setEmail(request.getParameter("email"));
       //验证
       if(!registerForm.validte()){
           //转向到register.jsp
           rd = request.getRequestDispatcher("/register.jsp");
           rd.forward(request, response);
           return;
          
       }
      
       //将registerFormBean对象中的数据存储到UserBean对象中,然后调用DbUtil中的insertUtil
      
       UserBean user = new UserBean();
       user.setName(registerForm.getName());
        user.setPassword(registerForm.getPassword1());
       user.setPassword(registerForm.getPassword2());
       user.setEmail(registerForm.getEmail());
       DbUtil db = DbUtil.getInstance();
       try {
           db.insertUser(user);
       } catch (DbUtilException ex) {
           // 处理该异常
           registerForm.setErrorMsg("name", ex.getErrorMsg("name"));
           //转到register.jsp页面中
           rd = request.getRequestDispatcher("/register.jsp");
           rd.forward(request, response);
           return;
       }
      
       //得到session对象
       HttpSession session= request.getSession();
       session.setAttribute("user", user);
       rd = request.getRequestDispatcher("/loginSuccess");
       rd.forward(request, response);
    }

3.RegisterFormBean.java

package com.csdn.beans;
 
import java.util.Hashtable;
 
public class RegisterFormBean {
    private String name = "";
    private String password1 = "";
    private String password2 = "";
    private String email = "";
 
    public RegisterFormBean() {
       super();
       // TODO Auto-generated constructor stub
    }
 
    public RegisterFormBean(String name, String password1, String password2,
           String email) {
       super();
       this.name = name;
       this.password1 = password1;
       this.password2 = password2;
       this.email = email;
    }
 
    public String getName() {
       return name;
    }
 
    public void setName(String name) {
       this.name = name;
    }
 
    public String getPassword1() {
       return password1;
    }
 
    public void setPassword1(String password1) {
       this.password1 = password1;
    }
 
    public String getPassword2() {
       return password2;
    }
 
    public void setPassword2(String password2) {
       this.password2 = password2;
    }
 
    public String getEmail() {
       return email;
    }
 
    public void setEmail(String email) {
       this.email = email;
    }
 
    @Override
    public String toString() {
       return "RegisterFormBean [email=" + email + ", name=" + name
              + ", password1=" + password1 + ", password2=" + password2 + "]";
    }
 
    // 基本格式的验证
    private Hashtable errors = new
Hashtable();
 
    @SuppressWarnings("unchecked")
    public boolean validte() {
       boolean okAll = true;
       // 语法格式的验证
       if (name.trim().equals("")) {
           errors.put(name, "请重新输入");
           okAll = false;
       }
       if (password1.length() > 10 || password1.length() < 6) {
           errors.put("password1", "密码必须包含6-10个字符");
           okAll = false;
       }
       if (!password2.equals("password1")) {
           errors.put("password2", "密码不一致");
           okAll = false;
       }
       if (!email.matches("[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+")) {
           errors.put("email", "邮箱格式不正确");
           okAll = false;
       }
 
       return okAll;
    }
 
    public void setErrorMsg(String err, String errMsg) {
       if (err != null && errMsg !=
null) {
           errors.put(err, errMsg);
       }
    }
 
    public String getErrorMsg(String err) {
       Object  message = (String) errors.get(err);
       return (String) ((message == null) ? "" : message);
    }
 
}
4. UserBean.java

package com.csdn.beans;
public class UserBean {
    private String name;
    private String password;
    private String email;
    public UserBean() {
       super();
       // TODO Auto-generated constructor stub
    }
    public UserBean(String name, String password, String email) {
       super();
       this.name = name;
       this.password = password;
       this.email = email;
    }
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public String getPassword() {
       return password;
    }
    public void setPassword(String password) {
       this.password = password;
    }
    public String getEmail() {
       return email;
    }
    public void setEmail(String email) {
       this.email = email;
    }
    @Override
    public String toString() {
       return "UserBean [email=" + email + ", name=" + name + ", password="
              + password + "]";
    }
    //验证方法
    public boolean validatePassword(String password){
       if(this.password.equals(password)){
           return true;
       }else{
           return false;
       }
    }
}
5. DbUtil.java

package com.csdn.util;
import java.util.Hashtable;
import sun.security.jca.GetInstance;
import com.csdn.beans.UserBean;
import com.csdn.exception.DbUtilException;
 
//单利类的实现
public class DbUtil {
    private Hashtable users = new
Hashtable();
    static DbUtil instance = new DbUtil();
    private DbUtil(){
       UserBean user1 = new UserBean();
       user1.setName("张三");
       user1.setPassword("1234567");
       user1.setEmail("zhangsan@163.com");
      
       UserBean user2 = new UserBean();
       user2.setName("李四");
       user2.setPassword("1234567");
       user2.setEmail("zhangsan@163.com");
      
       UserBean user3 = new UserBean();
       user3.setName("王五");
       user3.setPassword("1234567");
       user3.setEmail("zhangsan@163.com");
      
       users.put(user1.getName(), user1);
       users.put(user2.getName(), user2);
       users.put(user3.getName(), user3);
    }
    public static DbUtil getInstance(){
       return instance;
    }
    public UserBean getUser(String name){
       UserBean user = (UserBean) users.get(name);
       return user;
    }
    public void insertUser(UserBean user)
throws
DbUtilException{
       if(user==null){
           return;
       }
       String userName=user.getName();
       if(users.get(userName)!=null){
           //说明该用户名已经存在
           DbUtilException ex = new DbUtilException();
           ex.setErrorMsg("name","该用户已经存在");
           throw ex;
       }
       //说明该用户不存在,添加
       users.put(userName, user);
    }
   
}
6.自定义异常类

package com.csdn.exception;
 
import java.util.Hashtable;
 
//异常处理类
public class DbUtilException extends Exception {
    // 存储错误消息
    private Hashtable errors = new
Hashtable();
 
    public void setErrorMsg(String err, String msg) {
       if (err != null && msg !=
null) {
           errors.put(err, msg);
       }
    }
 
    public String getErrorMsg(String err) {
       Object message = (String) errors.get(err);
       return (String) ((message == null) ? "" : message);
    }
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息