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,显示结果