Struts2之基于配置的字段校验

Posted x_jingxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2之基于配置的字段校验相关的知识,希望对你有一定的参考价值。

上一篇struts2之输入校验介绍了手动完成输入校验,也即依靠重写validate方法和validateXxx方法,指定请求某个方法时对传入的参数进行校验。

本篇介绍基于配置的字段校验。下面是登录的常见校验:

1、在src目录下创建action类ValidateUserAction

package com.action;

import com.opensymphony.xwork2.ActionSupport;

public class ValidateUserAction extends ActionSupport {
    private String loginid;
    private String loginpwd;
    private String msg;
    
    //登录
    public String login(){
        msg = "登录成功!";
        return "success";
    }
    
    public String getLoginid() {
        return loginid;
    }

    public void setLoginid(String loginid) {
        this.loginid = loginid;
    }

    public String getLoginpwd() {
        return loginpwd;
    }

    public void setLoginpwd(String loginpwd) {
        this.loginpwd = loginpwd;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }


}

2、在src目录下新建struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="hello" namespace="/" extends="struts-default">
        <action name="validateUser_*" method="{1}" 
            class="com.action.ValidateUserAction">
            <result name="success">/index.jsp</result>
            <result name="input">/login.jsp</result>
        </action>
    </package>
</struts>   

3、在WebContent下新建登录页面login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/list.css">
<style>
.bg {
    width: 658px;
    height: 220px;
    background: url(images/login.png);
    padding-top: 20px;
}
</style>
<title>登录</title>
</head>
<body>
    <div style="font-size:25;font-family:微软雅黑">
        <b>请输入个人信息</b>
    </div>
    <form action="validateUser_login.action" method="post">
        <div class="bg">
            <center>
                <p>
                    账号:<input type="text" name="loginid">
                    <span style="color:red; font-size:12px;">${fieldErrors[\'loginid\'][0]}</span>
                </p>
                <p>
                    密码:<input type="text" name="loginpwd">
                    <span style="color:red; font-size:12px;">${fieldErrors[\'loginpwd\'][0] }</span>
                </p>
                <input type="image" src="images/sure.jpg">
            </center>
        </div>
    </form>
<body>
</html>

4、在action同级目录下新建ValidateUserAction-validateUser_login-validation.xml配置文件。

文件命名规则:被校验Action的类名-struts.xml中配置的该action的name属性-validate.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 name="loginid"><!--loginid属性-->
        <field-validator type="requiredstring"><!--字符串必填校验器-->
               <message>账号不能为空</message>
        </field-validator>
        <field-validator type="stringlength"><!--字符串长度校验器-->
               <param name="minLength">6</param>
               <param name="maxLength">12</param>
               <message>账号长度必须在${minLength}至${maxLength}之间</message>
        </field-validator>
        <field-validator type="regex"><!--正则表达式校验器-->
              <param name="regexExpression"> 
                     <![CDATA[(^[^ ]{1,}$)]]>
              </param>
               <message>账号中不允许出现空格</message>
        </field-validator>
    </field>
    <field name="loginpwd"><!--loginpwd属性-->
        <field-validator type="requiredstring"><!--字符串必填校验器-->
               <message>密码不能为空</message>
        </field-validator>
        <field-validator type="stringlength"><!--字符串长度校验器-->
               <param name="minLength">6</param>
               <param name="maxLength">15</param>
               <message>密码长度必须在${minLength}至${maxLength}之间</message>
        </field-validator>
        <field-validator type="regex"><!--正则表达式校验器-->
              <param name="regexExpression"> 
                     <![CDATA[(^[^ ]{1,}$)]]>
              </param>
               <message>密码中不允许出现空格</message>
        </field-validator>
    </field>
</validators>

以下的项目目录结构图

 

以上是关于Struts2之基于配置的字段校验的主要内容,如果未能解决你的问题,请参考以下文章

struts2:字段校验和非字段校验代码示例

struts2之输入验证

Struts2的输入校验——校验规则文件的编写

struts2 之 struts2数据校验

Struts2请求参数校验

Struts2的输入校验