4.1 输入校验的意义
4.1.1 什么是输入校验
输入校验,从字面上来看好像是指对如输入的密码或者用户名输入错误的校验。其实这个不算输入校验,这个算是业务逻辑的判断。输入校验是对输入的用户名长度、密码长度、年龄信息等的判断。为了给大家一个感官上的认识,现在打开163邮箱的注册页面,如图4.1所示。
在邮箱注册页面上给出了许多的提示,比如“密码长度6~16”。这就要求输入的密码必须在这个规范之内。还有其他的提示信息,假如不按照这些要求来输入信息,而是随意地输入,那么页面就会提示错误信息,如图4.2所示。这些错误信息是如何产生的呢,这就归功于输入校验了。
图4.1 163邮箱注册页面
图4.2 提示错误信息
输入校验用来判断用户输入的信息是否合法,如果不合法的话,就返回用户输入页并提示信息,并提醒用户重新输入。这个对异常输入的处理,就是输入校验。当然这个注册页面还用到了Ajax方面的知识,所以可以在不提交的状态下就能提示错误信息。关于Ajax方面的知识,在后面将进行详细讲解。
4.1.2 为什么要进行输入校验
那为什么要进行输入校验呢?使用它有什么好处呢?为了更好地说明,来看下面这个注册页面,如图4.3所示。
图4.3 注册页面
现在按常规输入用户注册信息,单击“注册”按钮进行注册。页面跳转到注册信息显示页,如图4.4所示。
假如不再按常规来输入用户注册信息,单击“注册”按钮进行注册。页面跳转到注册信息显示页,如图4.5所示。
图4.4 注册信息显示页(1)
图4.5 注册信息显示页(2)
从这个注册信息显示页上发现了许多的问题,比如用户名还有密码的长度过长、密码和确认密码不同、年龄信息不合理、错误的邮箱地址。还有一个重要的问题,就是出生日期。在出生日期这栏中,输入的是“2099-4-25”,只是因为显示页使用<s:property>标签输出,所以输出的日期默认是短日期格式。这里换种显示方式,使用EL表达式来进行输出,修改代码如下所示。
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>output</title> </head> <body> 用户名:${requestScope.username }<br> 密码:${requestScope.password }<br> 确认密码:${requestScope.repassword }<br> 年龄:${requestScope.age }<br> 出生日期:${requestScope.birth }<br> 邮箱地址:${requestScope.emaillt@span b=1> }<br> </body> </html>
使用EL表达式来输入用户信息,如图4.6所示。从输出的用户信息可以清楚地看出,用户的时间信息也有问题。
这样异常的输入除了不符合逻辑外,还将会带来很多的异常,严重的话还可能导致系统的崩溃。假如使用数据库表来储存用户的信息,要求用户名长度不能超过20,用户这种异常的输入,则可能导致数据库的异常,所以必须对用户输入的信息进行输入校验。而输入校验又分为两种:一种是客户端校验,一般使用JavaScript代码实现;一种是服务器端校验,通过在服务器端编写校验代码实现。
图4.6 注册信息显示页(3)