![零基础学Struts](https://wfqqreader-1252317822.image.myqcloud.com/cover/999/602999/b_602999.jpg)
4.1 输入校验的意义
4.1.1 什么是输入校验
输入校验,从字面上来看好像是指对如输入的密码或者用户名输入错误的校验。其实这个不算输入校验,这个算是业务逻辑的判断。输入校验是对输入的用户名长度、密码长度、年龄信息等的判断。为了给大家一个感官上的认识,现在打开163邮箱的注册页面,如图4.1所示。
在邮箱注册页面上给出了许多的提示,比如“密码长度6~16”。这就要求输入的密码必须在这个规范之内。还有其他的提示信息,假如不按照这些要求来输入信息,而是随意地输入,那么页面就会提示错误信息,如图4.2所示。这些错误信息是如何产生的呢,这就归功于输入校验了。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0101_0001.jpg?sign=1739540506-CFEUJtxVN2ba9qQtDJYl3LkXuZiZFauY-0-b38445b706dc6ffff6de3add9310bd42)
图4.1 163邮箱注册页面
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0101_0002.jpg?sign=1739540506-8Kc0MQaAO4LNKHrgctal3np3c5FMiPLB-0-d7940966af525717a5dc1e584fa03a01)
图4.2 提示错误信息
输入校验用来判断用户输入的信息是否合法,如果不合法的话,就返回用户输入页并提示信息,并提醒用户重新输入。这个对异常输入的处理,就是输入校验。当然这个注册页面还用到了Ajax方面的知识,所以可以在不提交的状态下就能提示错误信息。关于Ajax方面的知识,在后面将进行详细讲解。
4.1.2 为什么要进行输入校验
那为什么要进行输入校验呢?使用它有什么好处呢?为了更好地说明,来看下面这个注册页面,如图4.3所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0102_0001.jpg?sign=1739540506-FTes18rTNDMoAHvyWaSDNWVxal74OEEx-0-ebf24abc1bc65c15473c3f6330e2f2fb)
图4.3 注册页面
现在按常规输入用户注册信息,单击“注册”按钮进行注册。页面跳转到注册信息显示页,如图4.4所示。
假如不再按常规来输入用户注册信息,单击“注册”按钮进行注册。页面跳转到注册信息显示页,如图4.5所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0102_0002.jpg?sign=1739540506-2vPpxQmiiPwGjFR0WpA0Gb7zJUpYmMPv-0-c903925968370d1b7ddaabb0795930c9)
图4.4 注册信息显示页(1)
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0102_0003.jpg?sign=1739540506-66auBBRiAEt8uI7y6ZLIgn7XWP0e2J4z-0-67f1f82ab5c13d60cbfd2042672dab9a)
图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代码实现;一种是服务器端校验,通过在服务器端编写校验代码实现。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0103_0001.jpg?sign=1739540506-VekavaoU2AjJ4nLebNR14EiHBhZh0qTU-0-53c9d24dcc41204eff1f572c50ba4518)
图4.6 注册信息显示页(3)