Struts2中使用validate校验框架

Struts2校验框架详解及使用案例
本文深入解析了Struts2的校验框架,包括其内部机制、使用方法以及常见错误处理。通过一个具体案例展示了如何配置校验规则、实现数据验证并处理校验错误。

Struts2的校验框架依赖自带的两个拦截器validationworkflow,他们都是在默认的拦截器栈中:


<interceptor-stack name="defaultStack">

......

 <interceptor-ref name="validation">

    <param name="excludeMethods">input,back,cancel,browse</param>

 </interceptor-ref>

<interceptor-ref name="workflow">

<param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref>

......

</interceptor-stack>

 validation拦截器会根据XML中的配置文件的设置,对JSP中发送的请求的数据进行校验,如果发现错误,会形成一个field-specific errors列表。workflow拦截器,会检查当前产生的各种错误,如果发现错误,那么默认就返回 "input" 结果,并将这些错误信息返回到JSPform中显示。

 如果我们使用的配置,并且struts.xml并没有配置name="input"的action,这时候有校验错误,我们会得到Struts2框架给我们的一个错误信息:你没有配置name="input"的action

1.

jsp页面代码

<body>
    <s:property value="username"/>
    <s:form action="login" method="post" validate="true">
        <s:textfield label="姓名" name="username"></s:textfield>
        <s:textfield label="年龄" name="age"></s:textfield>
        <s:password label="密码" name="password"></s:password>
        <s:submit value="submit"></s:submit>
    </s:form>
    <s:debug></s:debug>
  </body>

2.

struts.xml中代码

     <constant name="struts.devMode" value="true" />
     <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.anbo.action.LoginAction" >
            <result name="success">
              /result.jsp
            </result>
            <result name="input">
              /Login.jsp
            </result>
        </action>
        
    </package>

3.

LoginAction中代码

package com.anbo.action;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction  extends ActionSupport{
    private static final long serialVersionUID=-7505437345373234225L;
    private String username;
    private int age;
    private String password;

    public int getAge() {
        System.out.println("getAge");
        return age;
    }
    public void setAge(int age) {
        System.out.println("setAge");
        this.age = age;
    }
    public String getUsername() {
        System.out.println("getUsername");
        return username;
    }
    public void setUsername(String username) {
        System.out.println("setUsername");
        this.username = username;
    }
    public String getPassword() {
        System.out.println("getPassword");
        return password;
    }
    public void setPassword(String password) {
        System.out.println("setPassword");
        this.password = password;
    }
    
}

4、创建一个XML文件:QuizAction-validation.xml代码如下,这个文件是validation.xml文件,命名标准必须是<ActionClassName>-validation.xml或者是<ActionClassName>-<ActionAliasName>-validation.xml,并且和QuizAction类在同一个目录下。

<?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="username">
      <field-validator type="requiredstring">
          <message>you must enter a name</message>
      </field-validator>
  </field>
  <field name="age">
      <field-validator type="int">
          <param name="max">19</param>
          <param name="min">10</param>
          <message>age value must in between 10 and 19</message>
     </field-validator>
  </field>
 
</validators>

5.创建result.jsp页面


【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)内容概要:本文围绕使用MATLAB和XBee技术实现温度传感器无线网络的连续监控展开研究,介绍了如何构建无线传感网络系统,并利用MATLAB进行数据采集、处理与可视化分析。系统通过XBee模块实现传感器节点间的无线通信,实时传输温度数据至主机,MATLAB负责接收并处理数据,实现对环境温度的动态监测。文中详细阐述了硬件连接、通信协议配置、数据解析及软件编程实现过程,并提供了完整的MATLAB代码示例,便于读者复现和应用。该方案具有良好的扩展性和实用性,适用于远程环境监测场景。; 适合人群:具备一定MATLAB编程基础和无线通信基础知识的高校学生、科研人员及工程技术人员,尤其适合从事物联网、传感器网络相关项目开发的初学者与中级开发者。; 使用场景及目标:①实现基于XBee的无线温度传感网络搭建;②掌握MATLAB与无线模块的数据通信方法;③完成实时数据采集、处理与可视化;④为环境监测、工业测控等实际应用场景提供技术参考。; 阅读建议:建议读者结合文中提供的MATLAB代码与硬件连接图进行实践操作,先从简单的点对点通信入手,逐步扩展到多节点网络,同时可进一步探索数据滤波、异常检测、远程报警等功能的集成。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值