本章目标
通过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 />
年 龄:<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"/>
年 龄:<jsp:getProperty property="age" name="reg"/>
E-mail:<jsp:getProperty property="email" name="reg"/>
</body>
</html>
效果图:
程序完成需要的页面
小结
本程序演示了一个简单的程序操作,JavaBean负责验证,JSP负责显示;
通过JavaBean可以进行一些操作的封装