模式2——用户注册

模式2——用户注册

register.jsp:负责向用户显示注册页面,用户名、密码、确认密码、E-mail

       |提交给

ControllerServlet:用来接受客户端提交的请求,然后进行验证:基本语法格式的验证,该用户是否是已经存在的用户     如果该用户是合法的,将该用户加入到user这个集合对象昂中,然后跳转到loginSuccess.jsp      否则,跳转到register.jsp,将错误信息显示出来,让用户重新注册

 

RegisterFormBean:封装用户输入表单的数据,并做数据格式的验证

 

UserBean:用来保存用户的信息,包括用户名、密码、确认密码

 

DbUtil:集合对象users,<”zhangsan”,user1>

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

自定义异常:DbUtileException

 

Register.jsp部分:

  <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;码</td>

<td><input type="password"name="password" value="<%=registerForm.getPassword()%>"/></td>

<td><%=registerForm.getErrorMsg("password") %></td></tr>

<tr>

<td>确认密码</td>

<td><input type="password"name="password2"/></td>

<td>&nbsp;</td></tr>

<tr>

<td>&nbsp;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>

 

ControllerServlet部分:

doPost:

    RequestDispatcher rd=null;

      

       //获取表单提交的数据,封装在RegisterFormBean对象中,进行语法格式的验证

       RegisterFormBean registerForm=new RegisterFormBean();

       request.setAttribute("registerForm",registerForm);

      

       registerForm.setName(request.getParameter("name"));

       registerForm.setPassword(request.getParameter("password"));

       registerForm.setPassword2(request.getParameter("password2"));

       registerForm.setEmail(request.getParameter("email"));

       if(registerForm.validate()){

           //如果为假,转向到注册页面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.getPassword());

       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;

          

       }

       //插入成功直接跳过catch

       HttpSession session=request.getSession();

       session.setAttribute("user",user);

       rd=request.getRequestDispatcher("/loginSuccess.jsp");

       rd.forward(request,response);

 

RegisterFormBean部分

private String name="";

    private String password="";

    private String password2="";

    private String 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 getPassword2() {

       return password2;

    }

    public void setPassword2(String password2) {

       this.password2 = password2;

    }

    public String getEmail() {

       return email;

    }

    public void setEmail(String email) {

       this.email = email;

    }

   

    private Hashtable errors=new Hashtable();

   

    public boolean validate(){

       boolean okAll=true;

       //基本语法格式的验证

       if(name.trim().equals("")){

           errors.put("name","输入姓名");

           okAll=false;

       }if(password.length()>10 || password.length()<6){

           errors.put("password","密码必须包含6-10个字符");

           okAll=false;

       }if(password2.equals(password)){

           errors.put("password","两次输入密码不匹配");

           okAll=false;

           //正则表达式

       }if(!email.matches("[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+")){

           errors.put("email", "email格式不正确");

           okAll=false;

       }

       return okAll;

    }

    public void setErrorMsg(String err,String errorMsg){

       if(err!=null && errorMsg!=null){

           errors.put(err, errorMsg);

       }

    }

    public String getErrorMsg(String err){

       String message=(String) errors.get(err);

       //如果没有找到对应的制定错误消息就返回空串,否则返回粗偶消息

       return  (message==null)? "" : message;

    }

 

UserBean部分:

private String name;

    private String password;

    private String 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;

    }

   

    //验证方法

    public boolean validatePassord(String password){

       if(this.password.equals(password)){

           return true;

       }else{

           return false;

       }

    }

 

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("lisi@163.com");

      

       UserBean user3=new UserBean();

       user3.setName("万古");

       user3.setPassword("1234567");

       user3.setEmail("wang@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.setErrorsMsg("name", "该用户已经存在");

           throw ex;

       }

       //说明该用户不存在

       users.put(userName,user);

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值