输入校验和类型转换相辅相成
提交String请求参数,首先是类型转换,再次验证数据的合理性,然后进一步处理分为客户端校验和服务器校验
客户端:js代码
服务器校验:java代码
客户端校验不能阻止恶意行为,决不能代替服务器校验
客户端也必不可少,由于大部分的浏览行为是正常行为,这样可以降低服务器的负担
两者必不可少。struts2的输入校验完全是模块化的方式
需要检验哪个Action
1、继承ActionSupport类
2、为该Action增加校验规则文件 —-struts2会自动加载该检验规则文件
3、校验规则文件的文件名应该是actionname-validation.xml(可以拷贝strtus2文件夹里的blank项目里的模板)
每个校验器对应一条校验规则
校验失败,会自动跳转到input的result,因此需要配置一个input的result
需求:注册用户,使用内置校验器验证输入数据
1、jsp注册页面
<s:form action="RegisterAction">
<s:textfield name="user.name" label="用户名"/>
<s:textfield name="user.pass" label="密码"/>
<s:textfield name="user.weight" label="体重"/>
<s:textfield name="user.birth" label="生日"/>
<s:submit value="注册"/>
</s:form>
2、RegisterAction类
package org.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class Registe extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
//UserService业务类,内存仿真数据库
UserService us = new UserService();
int status = us.addUser(user);
if(status == -1){
return ERROR;
}
return SUCCESS;
}
}
3、为action制作规则文件
注意:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"
>
<validators>
<!-- 为待校验的属性设置校验规则 -->
<field name="user.name">
<field-validator type="requiredstring" short-circuit="true">
<param name="trim">true</param>
<message>姓名不能为空</message>
</field-validator>
</field>
<field name="user.pass">
<field-validator type="requiredstring" short-circuit="true">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
</field>
<field name="user.weight">
<field-validator type="double" short-circuit="true">
<param name="minInclusive">10.0</param>
<param name="maxInclusive">90.0</param>
<message>体重在10.0~90.0之间</message>
</field-validator>
</field>
<field name="user.birth">
<field-validator type="required" short-circuit="true">
<message>生日不能为空</message>
</field-validator>
<field-validator type="date" short-circuit="true">
<message>生日格式是short形式</message>
</field-validator>
</field>
</validators>
4、配置input逻辑视图(struts.xml)
<package name="action" extends="struts-default">
<action name="RegisterAction" class="org.struts2.action.Registe">
<result name="input">/WEB-INF/content/register.jsp</result>
<result type="chain">listUsers</result>
</action>
<action name="listUsers" class="org.struts2.action.usersListAction">
<result>/WEB-INF/content/usersList.jsp</result>
</action>
</package>
原文地址:http://blog.csdn.net/havedream_one/article/details/46333557