一、手动验证的实现
ActionSupport类对Validateable接口进行了实现,但对validate()方法空实现。
使用validate()方法可以用户请求的多个Action进行验证,但其验证的逻辑是相同。如果在一个Action类中编写了多个请求处理方法,而引Action重写了validate()方法,那么默认情况下,在执行每一个请求方法的过程中,都会经过validate()方法的验证处理。
二、验证文件的命名规则
文件名必须以“ActionName-validation.xml”或“ActionName-AilaName-validation.xml”的形式。其中,ActionName是Action对象名称,AliasName为Action配置中的名称,即struts.xml配置文件中Action元素对应name属性的名称。
**以”ActionName-validation.xml“方式命名
在这种方式中,数据的验证会作用于整个Action对象中,并验证Action对象的请求业务处理方法。如果Action对象中只存在单一的处理方法,或者在多个请求处理方法中,验证处理的规则都相同,可以用此方式
**以”Action-AliasName-validation.xml“方式命名
如果一个Action对象中包含多个请求方法,而又没有必要对每一个方法进行验证,只需要对Action对象中的特定方法进行处理,可以用此方式
三、验证文件的编写风格
**字段验证哭喊编写风格。
字段验证器编写风格是指在验证过程中,主要针对字段进行验证,此种方式是验证文件根元素<validators>下,使用<field-validator>元素编写验证规则的方式,
<validators>
<!--验证用户名-->
<field name="username">
<field-validator type="requiredstring">
<message>请输入用户名</message>
<field-validator type="requiredstring">
</field>
<!--验证密码-->
<field name="password">
<field-validator type="requiredstring">
<message>请输入密码</message>
<field-validator type="requiredstring">
</field>
</validators>
**非字段验证器编写风格
非字段验证风格是指在验证过程中,既可以是对字段验证,也可以对普通数据验证
<validators>
<validator type="requiredstring">
<!--验证用户名-->
<param name="fieldName">username</param>
<!--验证密码-->
<param name="fieldName">password</param>
<field-validator type="requiredstring">
</field>
</validators>
四、Struts2标签下的用户注册
(1)、搭建环境
(2)、创建index.jsp
<body>
<a href="ognl.action">success.jsp</a>
<br/>
<a href="testAction.action">测试</a>
<br/>
<h2>用户注册</h2>
<s:form action="userAction" method="post">
<s:textfield name="name" label="用户名" required="true" requiredposition="left"></s:textfield>
<s:password name="password" label="密码" required="true" requiredposition="left"></s:password>
<s:radio name="sex" list="#{1 : '男', 0 : '女'}" label="性别" required="true" requiredposition="left"></s:radio>
<s:select list="{'请选择省份','吉林','广东','山东','河南'}" name="province" label="省份"></s:select>
<s:checkboxlist list="{'足球','羽毛球','乒乓球','蓝球'}" name="hobby" label="爱好"></s:checkboxlist>
<s:textarea name="description" cols="30" rows="5" label="描述"></s:textarea>
<s:submit value="注册"></s:submit>
<s:reset value="重置"></s:reset>
</s:form>
</body>
(3)、创建success.jsp
<body>
<div>
<h2>用户注册信息</h2>
<ul>
<li>用户名:<s:property value="name"/></li>
<li>密码:<s:property value="password"/></li>
<li>性别:<s:if test="sex==0">女</s:if><s:else>男</s:else></li>
<li>省份:<s:property value="province"/></li>
<li>爱好:<s:property value="hobby"/></li>
<li>描述:<s:property value="description"/></li>
</ul>
</div>
</body>
(4)、创建UserAction
public class UserAction extends ActionSupport {
// 用户名
private String name;
// 密码
private String password;
// 描述
private String description;
// 性别
private int sex = 0;
// 省份
private String province;
// 爱好
private String[] hobby;
// 用户注册
public String execute() throws Exception {
return SUCCESS;
}
省略set、get方法....
}
(5)struts.xml配置
<struts>
<!-- 声明常量 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 声明包 -->
<package name="myPackage" extends="struts-default">
<!-- 创建TagAction映射 -->
<action name="userAction" class="com.lyq.action.UserAction">
<!-- 注册成功的返回页面 -->
<result>success.jsp</result>
</action>
</package>
</struts>
五、使用验证框架对数据校验
(1)、搭建环境
(2)、创建UserAction, 并将UserAction配置到struts.xml
public class UserAction extends ActionSupport {
private String username;
private String password;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
省略set、get方法
}
<struts>
<!-- 声明常量 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 声明包 -->
<package name="myPackage" extends="struts-default">
<action name="userAction" class="com.lyq.action.UserAction">
<!-- 用户登录页面 -->
<result name="input">/login.jsp</result>
<!-- 注册成功页面 -->
<result>success.jsp</result>
</action>
</package>
</struts>
(3)、创建用户登录login.jsp页面
<body>
<s:form action="userAction2" method="post">
<s:textfield name="username" label="用户名" required="true"></s:textfield>
<s:password name="password" label="密码" required="true"></s:password>
<s:submit key="submit" value="登录"></s:submit>
</s:form>
</body
(4)创建success.jsp
<body>
<h2>
<s:property value="username"/>,登录成功
</h2>
</body>
(5)、编写用户登录的验证文件UserAction-validation.xml
<validators>
<!-- 验证用户名 -->
<field name="username">
<field-validator type="requiredstring">
<message>请输入用户名</message>
</field-validator>
</field>
<!-- 验证密码 -->
<field name="password">
<field-validator type="requiredstring">
<message>请输入密码</message>
</field-validator>
</field>
</validators>