九、数据验证机制

一、手动验证的实现

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值