Struts 2.0服务端基本验证
Struts 2的一个核心工程就是支持Validation(验证)。Struts 2支持包括正则表达式验证,数据类型支持的有conversion、date、double、email、expression、fieldexpression、int、regex、required、requiredstring、stringlength、url和visitor。
使用验证功能,需要在struts.xml中进行配置。同时Struts 2支持服务端和客户端验证。像Ajax验证。可以使用验证来达到检查空字段或是满足特殊要求的form表单的目的。很重要的一点是struts 2支持自定义验证。
下面我将写一个实例形验证,验证要求:
Name:字符串长度最大不能超过50个字符。
Age:必须是1-120之间的整形。
Email:有效的email地址。
好了开始动手吧。
首先,写个action指向我们的创建新用户页面。
package validation.action;
import com.opensymphony.xwork2.ActionSupport;
public class CustomerNewAction extends ActionSupport {
public String execute(){
return SUCCESS;
}
}
下面是创建新用户的customer_new.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<s:head/>
</head>
<body>
<s:form action="CustomerSaveAction">
<h2>Enter Customer Details</h2>
<s:textfield label="Name" name="name"></s:textfield>
<s:textfield label="Age" name="age"></s:textfield>
<s:textfield label="Email" name="email"></s:textfield>
<s:submit label="Save" name="Save"></s:submit>
</s:form>
</body>
</html>
页面效果如图

接下来是最重要的,在s:head标签中,这里是验证错误以后显示错误信息的样式。Form表单将数据提交到CustomerSaveAction中,此action将保存数据并重定向到customer_save_success.jsp用户创建成功页面。下面是action的代码:
package validation.action;
import com.opensymphony.xwork2.ActionSupport;
public class CustomerSaveAction extends ActionSupport {
private String name;
private int age;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String execute(){
return SUCCESS;
}
}
Customer_save_success.jsp
:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head> </head>
<body>
<h2>Customer information saved successfully</h2>
</body>
</html>
现在的工作就是想CustomerSaveAction声明一个Validation。首先在CustomerSaveAction.java同一目录下创建一个CustomerSaveAction-validation.xml文件。
CustomerSaveAction-validation.xml:
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>You must enter a value for Name</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">50</param>
<message>
Name cannot contain more than 50 characters
</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">120</param>
<message>Age must between 1 and 120</message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message>Please enter a valid email address</message>
</field-validator>
</field>
</validators>
最后一个步骤就是在struts.xml中组装。
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="validation" extends="struts-default">
<action name="CustomerNewAction"
class="validation.action.CustomerNewAction">
<result>/validation/customer_new.jsp</result>
</action>
<action name="CustomerSaveAction"
class="validation.action.CustomerSaveAction">
<result name="input">/validation/customer_new.jsp</result>
<result>/validation/customer_save_success.jsp</result>
</action>
</package>
</struts>
部署好以后,访问http://localhost:8080/struts_validation/CustomerNewAction.action,填入23dsf、sdf32、sdfdf23,显示结果
