JSP MVC實現用戶註冊

一  實現的思路:

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.01Transitional//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/csshref="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>

                        密&nbsp;&nbsp;碼:

                    </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>

                        &nbsp;

                    </td>

                    <td>

                        &nbsp;

                    </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, Stringpassword1, String password2,

           Stringemail) {

       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)){

           returntrue;

       }else{

           returnfalse;

       }

    }

}

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("[email protected]");

      

       UserBean user2 = new UserBean();

       user2.setName("李四");

      user2.setPassword("1234567");

      user2.setEmail("[email protected]");

      

       UserBean user3 = new UserBean();

       user3.setName("王五");

      user3.setPassword("1234567");

      user3.setEmail("[email protected]");

      

       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;

       }

       StringuserName=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);

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章