在程序运行中,为保证安全正确运行,我们需要对数据进行一些校验,包括在服务端和客户端进行验证。在Struts2中提供了一种校验框架,可以进行简单有效的基本校验。校验框架分为两种:字段优先和校验器优先校验器。
首先进行基本的配置和页面设置:
jsp页面:register.jsp注册
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <!-- 接收错误提示 --> <s:fielderror></s:fielderror> <!-- form表单提交数据 --> <s:form action="register.action" theme="simple"> 用户名:<s:textfield name="username" label="username"></s:textfield><br> 密码:<s:password label="password" name="password"></s:password><br> 确认密码:<s:password label="password" name="repassword"></s:password><br> 年龄:<s:textfield label="age" name="age"></s:textfield><br> 出生日期:<s:textfield label="birthday" name="birthday"></s:textfield><br> <s:submit value="提交"></s:submit> </s:form> </body> </html>
<span style="font-size:18px;">package Struts2; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private String username; private String password; private String repassword; private int age; private Date birthday; @Override public String execute() throws Exception { return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } } </span>
Struts配置:Struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="struts2" extends="struts-default"> <action name="register" class="Struts2.RegisterAction"> <!-- 注册成功转向成功页面 --> <result name="success">/registerSuccess.jsp</result> <!-- 注册失败则回到注册页面 --> <result name="input">/register.jsp</result> </action> </package> </struts>
完成上述配置和基本的页面设置之后,还需要建立我们的校验器文件,实质上就是xml文件。命名规则是:校验的Action+“-”+validation.xml,如本次的命名为:RegisterAction-validation.xml,文件与Action放在同一目录下
字段优先校验器:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/xwork/xwork-validator-1.0.2.dtd"> <validators> <!-- 字段优先校验器 --> <!-- 对username进行校验,此处的username对应属性驱动中的get和set对应的名 --> <field name="username"> <!-- 校验username是否为空 --> <field-validator type="requiredstring"> <message>用户名不能为空</message> </field-validator> <!-- 校验username长度范围 --> <field-validator type="stringlength"> <param name="maxLength">6</param> <param name="minLength">4</param> <message>用户名长度在4-6之间</message> </field-validator> </field> </validators>
到此,配置完毕(web.xml的配置就不再叙述)。运行的效果如下:
校验器优先:仍然是在RegisterAction-validation.xml中进行配置
<!-- 校验器优先校验器 --> <validator type="requiredstring"> <param name="fieldName">username</param> <message>用户名不能为空</message> </validator> <validator type="stringlength"> <param name="fieldName">username</param> <param name="minLength">4</param> <param name="maxLength">6</param> <message>用户名长度在4-6之间</message> </validator>
其效果跟字段优先校验一样,当然字段优先校验器与校验器校验两种方式还可以混合使用。
通过对校验器的学习,让自己对Struts2框架的认识逐渐加深。同时对框架也有了进一步的认识,其实所谓的框架就是把我们常用的一些功能封装起来,在使用的时候能够实现简单灵活,并且能够实现可配置,可复用等。