范例操作:注册验证

实例操作:注册验证

本章目标
通过JSP + JavaBean完成一个注册用户的验证功能。

package cn.demo2;
import java.util.HashMap;
import java.util.Map;
public class Register {//本类用于完成提交信息的验证
	private String name;//定义name属性
	private String age;//定义age属性,定义为String可以方便地使用正则验证
	private String email;//定义Email属性
	private Map<String,String> errors=null;//声明一个保存全部错误信息的Map集合
	public Register(){//构造方法中初始化属性
		this.name="";//初始化name属性
		this.age="";//初始化age属性
		this.email="";//初始化email属性
		this.errors=new HashMap<String, String>();//实例化Map对象,保存错误信息
	}
	public boolean isValidate(){//数据验证操作
		boolean flag=true;
		if(!this.name.matches("\\w{6,15}")){//验证name的内容是否合法
			flag=false;//修改标志位
			this.name="";//将不合法的内容清除
			errors.put("errname","用户名是6~15位的字母或数字。");//保存错误信息
		}
		if(!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w")){//验证email的内容是否合法
			flag=false;//修改标志位
			this.email="";//将不合法的内容清除
			errors.put("erremail","输入的email地址不合法");//保存错误信息
		}
		if(!this.age.matches("\\d+")){//验证age的内容是否合法
			flag=false;//修改标志位
			this.age="";//将不合法的内容清除
			errors.put("errage","年龄只能是数字");//保存错误信息
		}
		return flag;//返回标志位
	}
	public String getErrorMsg(String key){//取出对应的错误信息
		String value=this.errors.get(key);//从Map中根据key取得对应的value
		return value==null?"":value;//返回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 String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

 

运行效果 —— 填写注册信息

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
	<title>注册表单页</title>
</head>
<% request.setCharacterEncoding("utf-8"); //解决中文乱码 %>
<jsp:useBean id="reg" scope="request" class="cn.demo2.Register" /><!-- request 范围的javaBean -->
<body>
<form action="check.jsp" method="post">
	用户名:<input type="text" name="name" value="<jsp:getProperty property="name" name="reg"/>">
	<%=reg.getErrorMsg("errname") %><br />
	年&nbsp;&nbsp;龄:<input type="text" name="age" value="<jsp:getProperty property="age" name="reg"/>">
	<%=reg.getErrorMsg("errage") %><br />
	E-Mail:<input type="text" name="email" value="<jsp:getProperty property="email" name="reg"/>">
	<%=reg.getErrorMsg("erremail") %><br />
	<input type="submit" value="注册"><input type="reset" value="重置">
</form>
</body>
</html>

效果图:
范例操作:注册验证
运行效果 —— 用户填写正确

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
	<title>信息验证页</title>
</head>
<% request.setCharacterEncoding("utf-8"); //解决中文乱码 %>
<jsp:useBean id="reg" scope="request" class="cn.demo2.Register" /><!-- request 范围的javaBean -->
<jsp:setProperty property="*" name="reg"/><!-- 为属性自动赋值 -->
<body>
<%
	if(reg.isValidate()){//进行验证
%>
		<jsp:forward page="success.jsp"></jsp:forward><!-- 跳转到成功页 -->
<%	
	}else{//验证失败
 %>
 		<jsp:forward page="index.jsp"></jsp:forward><!-- 跳转到注册页 -->
 <%	
	}
 %>
</body>
</html>

效果图:
范例操作:注册验证

 

运行效果 —— 用户名和email填写不正确

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
	<title>信息验证页</title>
</head>
<% request.setCharacterEncoding("utf-8"); //解决中文乱码 %>
<jsp:useBean id="reg" scope="request" class="cn.demo2.Register" /><!-- request 范围的javaBean -->
<body>
	用户名:<jsp:getProperty property="name" name="reg"/>
	年&nbsp;&nbsp;龄:<jsp:getProperty property="age" name="reg"/>
	E-mail:<jsp:getProperty property="email" name="reg"/>
</body>
</html>

效果图:
范例操作:注册验证

 

程序完成需要的页面
范例操作:注册验证
 
小结
本程序演示了一个简单的程序操作,JavaBean负责验证,JSP负责显示;
通过JavaBean可以进行一些操作的封装