在程序运行中,为保证安全正确运行,我们需要对数据进行一些校验,包括在服务端和客户端进行验证。在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框架的认识逐渐加深。同时对框架也有了进一步的认识,其实所谓的框架就是把我们常用的一些功能封装起来,在使用的时候能够实现简单灵活,并且能够实现可配置,可复用等。