1. 输入校验章节目录
输入校验概述
客户端校验
服务器端校验
手动编程校验
重写validate方法
重写validateXxx()方法
输入校验流程
校验框架校验
Struts2 内置的校验器
常用的内置校验器的配置
2. 详细内容
2.1 输入校验概述
输入校验分为客户端校验和服务器端校验,客户端校验主要是过滤正常用户的误操作,主要通过JavaScript代码完成;服务器端校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
2.1.1 客户端校验
大多数情况下,使用JavaScript进行客户端校验的步骤如下:
编写校验函数;
在提交表单的事件中调用校验函数;
根据校验函数来判断是否进行表单提交;
下面通过一个简单的示例讲解使用JavaScript进行客户端校验的方法,具体代码如下所示:
<%--
Created by IntelliJ IDEA.
User: mairr
Date: 17-12-5
Time: 下午10:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page language = "java" import = "java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>注册界面</title>
<script type="text/javascript" >
// 去掉前后的空格
function deltrim(x) {
while (x.length > 0 && x.charAt(0) == ' ')
x = x.substring(1, x.length);
while (x.length > 0 && x.charAt(x.length - 1) == ' ')
x = x.substring(0, x.length - 1);
return x;
}
// 非空验证
function isNULL(elem,message){
var va = deltrim(elem.value);
if(va == " ") {
alert(message);
elem.focus();
return false;
}
return true;
}
// 验证帐号,帐号只能是小写字母数字,并且只能以字母开头
function validateId(){
var first = document.forms[0].id.value.charAt(0);
var exp = /^[a-z0-9]+$/;
if(isNULL(document.forms[0].id,"请输入帐号")){
// 验证非空
// 验证首字符
if((first >= 'a' && first <= 'z') || (first >= 'A' && first <= 'Z')){}
else{
alert("帐号首字符必须是字母!");
document.forms[0].id.focus();
return false;
}
if(!exp.test(document.forms[0].id.value)){
alert("帐号必须是字母或者数字!");
document.forms[0].id.focus();
return false;
}
return true;
}
else{
return false;
}
}
// 验证密码,密码要在8位以上,且需要有字母或者数字之外的字符
function validatepwd(){
var exp = /^[a-z0-9]+$/;
if(isNULL(document.forms[0].pwd," 请输入密码")){ //验证非空
if(document.forms[0].pwd.value.length <= 8){
alert("密码大于8位");
document.forms[0].pwd.focus();
return false;
}else{
if(exp.test(document.forms[0].pwd.value)){
alert("密码要有字母和数字之外的字符!");
document.forms[0].pwd.focus();
return false;
}
}
}else{
return false;
}
if(document.forms[0].pwd.value != document.forms[0].repwd.value)
{
alert("两次密码不一样!");
document.forms[0].pwd.focus();
return false;
}
return true;
}
// 验证邮箱,右边为六位数子
function checkcode() {
var exp = /^[0-9]+$/;
if(isNULL(document.forms[0].ecode,"请输入邮编")){ // 验证非空
if(document.forms[0].ecode.value.length != 6){
alert("邮编为6位");
document.forms[0].ecode.focus();
return false;
}else{
if(!exp.test(document.forms[0].ecode.value)){
alert("邮编为数字");
document.forms[0].ecode.focus();
return false;
}
}
return true;
}else{
return false;
}
}
// 验证E-mail的基本格式
function checkEmail(){
var exp = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(isNULL(document.forms[0].email,"请输入Email")){
// 验证非空
if(!exp.test(document.forms[0].email.value)){
alert("Email格式错误");
document.forms[0].email.focus();
return false;
}
return true;
}else{
return false;
}
}
// 提交按钮
function gogo(){
if(validateId() && validatepwd() && checkcode() && checkEmail()){
document.forms[0].submit();
return true;
}
return false;
}
</script>
</head>
<body>
<s:form action ="" theme="simple">
<table>
<tr>
<td>登录帐号</td>
<td><s:textfield/></td>
</tr>
<tr>
<td>密码</td>
<td><s:password/></td>
</tr>
<tr>
<td>确认密码</td>
<td><s:password/></td>
</tr>
<tr>
<td>邮编</td>
<td><s:textfield name = "ecode"/></td>
</tr>
<tr>
<td>Mail</td>
<td><s:textfield name = "email"/></td>
</tr>
<tr>
<td><input type="button" value="提交" /></td>
<td><s:reset value = "重置"/></td>
</tr>
</table>
</s:form>
</body>
</html>