struts2框架xml验证

struts2验证分为3步:

  1、获取需要验证的信息,使用同名属性,提供getter,setter方法。然后框架使用反射将值自动注入。

  2、对信息进行验证,成功失败作出对应的选择。

xml验证和手动验证第一步都是一样的,第二步是使用xml配置文件完成的。

1、jsp前台页面:

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘loginxml.jsp‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    xml页面
    <br/>
    <s:fielderror/>
    <s:form name="loginForm" method="post" namespace="/validate" action="validateXmlAction_login" theme="simple">
        <table border="1">
            <tr>
                <td>用户名</td>
                <td><s:textfield name="username" /></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><s:password name="psw" /></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><s:submit value="登录"/></td>
            </tr>
        </table>
    </s:form>

    <br/>

    <a href="${pageContext.request.contextPath }/validate/validateXmlAction_test.do">test其他的方法</a>
  </body>
</html>

书写验证文件xml:

  注意命名:命名规则为 Action类名+"-validation.xml"

   dtd文件在xwork-core包下的xwork.dtd文件中,自己选择版本。

<!DOCTYPE validators PUBLIC
          "-//Apache Struts//XWork Validator 1.0.3//EN"
          "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

然后在xml中写验证信息:

  

<?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:指定action中要校验的属性
            name:指定将被验证的表单字段的名字
    -->
    <field name="username">
        <!--
            field-validate:指定验证规则
                type:指定验证规则的名称
        -->

        <field-validator type="requiredstring">
            <!--
                param:向验证器传递的参数
                    requiredstring验证器的参数是true,设置为true的作用是去空格
            -->
            <param name="trim">true</param>
            <!--
                message:验证失败时,提示的错误信息
            -->
            <message><![CDATA[用户名不能为空!]]></message>
        </field-validator>
    </field>

    <field name="psw">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message><![CDATA[密码名不能为空!]]></message>
        </field-validator>
        <!-- 使用正则表达式验证规则来做 -->
        <field-validator type="regex">
            <param name="trim">true</param>
            <param name="regexExpression"><![CDATA[^[0-9a-zA-Z]{6,12}]]></param>
            <message><![CDATA[密码的长度必须在6至12之间]]></message>
        </field-validator>
    </field>

</validators>

注意:

  1、验证规则可以在/com/opensymphony/xwork2/validator/validators/default.xml下面可以找到。

  里面内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">

<!-- START SNIPPET: validators-default -->
<validators>

    <!--
        validator:声明验证规则
            name:验证规则的名称
            class:验证规则对应的class路径
    -->

    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
<!--  END SNIPPET: validators-default -->

  2、给对应验证器的参数与验证器类中的属性一致,也是使用struts2反射注入值的方法将参数传递进去,所以如果不知道参数名如何指定,可以先查看验证器源码。

  3、<![CDATA[]]>可以保证内容不轻易被改变

我们使用第二个链接,发现这样做验证的是该Action中的所有的行为。如何验证单个行为呢?

  就是验证的xml的命名规则改变:

    Action类名+"-"+访问Action的指定Action名+"-validation.xml"

    例如ValidateXmlAction-validateXmlAction_login-validation.xml

    

时间: 2024-10-21 00:04:32

struts2框架xml验证的相关文章

Struts2验证框架_xml验证失败

测试Struts2验证框架-->XML验证   启动tomcat后网页登录失败 Employee-validation.xml文件头如下: <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 原因是http://www.

自定义验证器——用Struts2框架以框架师的思维灵活做好该事情

面对的问题:自定义一个18位身份验证器,编写验证器,在validators.xml文件中进行注册.在验证配置文件中使用? 第一部分:理解Struts2中自带的验证器 第二部分:怎样通过服务器(后台),再次对前台的数据进行验证 第三部分:用Struts2来自定义验证器(问题解决方案) 第一部分:理解Struts2中自带的验证器 Struts2框架中自带的后台服务器验证分为两种:声明式验证和编程式验证 u  声明式验证(重点) ?  对哪个 Action 或 Model 的那个字段进行验证 ?  使

在struts2框架中实现手动处理输入验证

在struts2框架中实现手动处理输入验证,只需要在Action中对父类ActionSupport的validate方法重写即可.就是讲输入验证逻辑写在validate方法中.下面看项目中的Action类checkUser.java package action; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.opensymphony.xwork2.ActionSupport; public

自己定义验证器——用Struts2框架以框架师的思维灵活做好该事情

面对的问题:自己定义一个18位身份验证器.编写验证器.在validators.xml文件里进行注冊.在验证配置文件里使用? 第一部分:理解Struts2中自带的验证器 第二部分:如何通过server(后台).再次对前台的数据进行验证 第三部分:用Struts2来自己定义验证器(问题解决方式) 第一部分:理解Struts2中自带的验证器 Struts2框架中自带的后台server验证分为两种:声明式验证和编程式验证 u  声明式验证(重点) ?  对哪个 Action 或 Model 的那个字段进

Struts2框架使用(九)之struts2的验证框架

Struts2 验证简介 Struts2 基于 Struts2 拦截器,为开发者提供了一套易用的验证框架,并可扩展:一般的验证都支持: Struts2 内置验证 struts2内置的验证器 第三节 :自定义验证Struts2 基于 Struts2 拦截器,为开发者提供了一套易用的验证框架,并可扩展:一般的验证都支持,下面,将以一个注册的例子来举例: 首先创建一个pojo类 package com.mrlv.pojo; public class User { private String user

Struts2框架中书写XML配置文件时能添加提示技巧(方案二)

1.  先在/工程名/WebRoot/WEB-INF/lib/struts2-core-2.1.8.jar中找到struts-2.1.dtd文件. 2.  在Myeclipse8.6-->Window-->Preferences 3.  在搜索框输入xml文件,找到XMLCatalog,单击XML Catalog出现如上页面,之后单击Add按钮,出现如下图: 4.  在Location中选择FileSystem,选择struts-2.1.dtd文件的位置,如果这个文件在工程里面,可以使用Wor

解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架

程序结构:src文件夹下存放xml文件 该文件内容: <?xml version="1.0" encoding="UTF-8"?> <mystruts> <actions name="myaction1" namespace="/"> <action name="userdao" class="org.action.UserDAO"> &l

struts2学习(11)struts2验证框架1.验证简介、内置验证

一.Struts2验证简介: 二.struts2内置验证: 下面例子,需求是:为用户注册进行验证: com.cy.model.User.java: package com.cy.model; public class User { private String userName; private String name; private int age; private String email; private String homePage; public String getUserNam

Struts2的输入验证(二)-声明式验证证框架的原理

一.Struts2 声明式验证原理解析 1.Struts2 默认的拦截器栈中提供了一个 validation 拦截器,validation 拦截器负责加载和执行已注册的验证程序. 其运行时序图如下: 2.每个具体的验证规则都会对应具体的一个验证器,有一个配置文件把验证规则名称和验证器关联起来了,而实际上执行验证的就是那个验证器.  该文件位于 com.opensymphony.xwork2.validator.validators 下的 default.xml. 如下图所示: 3.配置文件与验证