JSP+JavaBean实现注册验证

0x00 前言

这是JSP和JavaBean的一个用户注册的实现案例的笔记,不涉及数据库操作。目的在于将JSP和JavaBean的核心知识点组合起来,实现思路可供参考。

  • 要求如下:
    1. 用户访问index.jsp页面,进行新人注册,显示注册所需要的内容;
    2. 当用户输入的值不满足正则表达式所匹配的条件时,提示错误信息,并清空不合法的文本输入框;
    3. 如果用户输入的内容部分满足时,提示不满足条件的错误信息,清空不满足条件的文本输入框,但保留已输入并满足条件的内容;
    4. 当用户输入的值全部满足条件是,跳转到注册成功页面,显示注册的用户信息;

0x01 环境说明

0x02 功能页面

No. 程序 说明
1 index.jsp 注册信息填写页,同时会将输入错误的数据进行错误提示
2 check.jsp 将输入的表单数据自动赋值给JavaBean,同时进行信息验证,如果验证失败则返回index.jsp页面
3 success.jsp 注册成功页,显示用户注册成功的信息
4 Register.java 注册使用的JavaBean,可以接受参数,同时进行判断,并返回错误的结果

0x03 代码实现

  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="reg" scope="request" class="com.bean.demo.Register"/>
<form action="check.jsp" method="post">
<table>
    <tr>
        <td>用户名</td>
        <td><input type="text" name="name" value="<jsp:getProperty name="reg" property="name"/>"></td>
        <td><%=reg.getErrorMsg("errname") %></td>
    </tr>
    <tr>
        <td>年&nbsp;&nbsp;龄</td>
        <td><input type="text" name="age" value="<jsp:getProperty name="reg" property="age"/>"></td>
        <td><%=reg.getErrorMsg("errage") %></td>
    </tr>
    <tr>
        <td>E-MAIL</td>
        <td><input type="text" name="email" value="<jsp:getProperty name="reg" property="email"/>"></td>
        <td><%=reg.getErrorMsg("erremail") %></td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="注册">
            <input type="reset" value="重置">
        </td>
    </tr>
</table>
</form>
</body>
</html>
  • check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="reg" scope="request" class="com.bean.demo.Register"/>
<jsp:setProperty property="*" name="reg"/>
<%
    if(reg.isValidate()){
%>
        <jsp:forward page="success.jsp"/>
<%
    }else{
%>
        <jsp:forward page="index.jsp"/>
<%
    }
%>
</body>
</html>
  • success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>成功</title>
</head>
<body>
<jsp:useBean id="reg" scope="request" class="com.bean.demo.Register"/>
<table>
    <tr>
        <td>用户名</td>
        <td><jsp:getProperty property="name" name="reg"/></td>
    </tr>
    <tr>
        <td>年&nbsp;&nbsp;&nbsp;&nbsp;龄</td>
        <td><jsp:getProperty property="age" name="reg"/></td>
    </tr>
    <tr>
        <td>E-MAIL</td>
        <td><jsp:getProperty property="email" name="reg"/></td>
    </tr>
</table>
</body>
</html>
  • Register.java
package com.bean.demo;

import java.util.HashMap;
import java.util.Map;

public class Register {
    private String name;    // 名字
    private String age; // 年龄   为了防止用户输入的内容不是数字时,抛出NumberFormat异常,这里使用String存储
    private String email;   // email
    private Map<String,String> errors = null;   // 保存错误信息
    public Register() {
        this.name = "";
        this.age = "";
        this.email = "";
        this.errors = new HashMap<String,String>();
    }
    public boolean isValidate() {
        boolean flag = true;
        if(!this.name.matches("\\w{6,15}")) {
            flag = false;
            this.name = ""; // 清空原本的name内容
            this.errors.put("errname", "用户名是6~15位的字母或数字");
        }
        if(!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w*")) {
            flag = false;
            this.email = "";    // 清空原本的email内容
            this.errors.put("erremail", "输入的email的地址不合法");
        }
        if(!this.age.matches("\\d+")) {
            flag = false;
            this.age = "";  // 清空原本的email内容
            this.errors.put("errage", "年龄只能是数字");
        }
        return flag;
    }
    public String getErrorMsg(String key) {
        String value = this.errors.get(key);
        return value==null?"":value;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public Map<String, String> getError() {
        return errors;
    }
    public void setError(Map<String, String> error) {
        this.errors = error;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

效果截图

  • 提交注册为空时:

提交为空时

  • 提交用户名条件满足,其他条件不满足时:

用户名条件满足,其他不满足

  • 注册成功时:

注册成功

猜你喜欢

转载自blog.csdn.net/Charles_Yeoung/article/details/80672185