struts2校验框架

Struts2提供了强大的输入校验功能,无需编写额外代码即可实现客户端和服务器端的校验。支持必填、类型、长度等校验规则,可通过重写validate方法或XML配置自定义校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

structs校验框架


  • Struts2提供了功能强大的输入校验机制,通过Struts2内建的输入校验器,在应用程序中无需书写任何代码,即可完成大部分的校验功能,并可以同时完成客户端和服务器端的校验。

  • 如果应用的输入校验规则特别,Struts2也允许通过重写validate方法来完成自定义校验,另外Struts2的开放性还允许开发者提供自定义的校验器
  • Struts2中可以通过重写validate方法来完成输入校验。如果我们重写了validate方法,则该方法会应用于此Action中的所有提供服务的业务方法。

Struts2的输入校验流程如下:

1.配置WEB-INF文件:

   <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2.编写一个Action类,该Action类接收页面提交过来的参数(LoginValidateAction)

package com.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginValidateAction extends ActionSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// Action类公用私有变量,用来做页面导航标志
	private static String FORWARD = null;
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public void validate() {
	
	}

	public String execute(){
		try {
			// 判断输入值是否是空对象或没有输入
			if (username.equals("admin")&& password.equals("1234")) {
			// 根据标志内容导航到操作成功页面
				FORWARD = "success";
			} else {
			// 根据标志内容导航到操作失败页面
				FORWARD = "input";
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return FORWARD;
	}
}

3.在该Action相同的目录下建一个xml文件,该文件的命名为ActionName-validation.xml,其中 ActionName为该Action的类名,例如LoginValidateAction-validation.xml。然后在xml配置文件中配置需要验证的字段。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message key="用户名不能为空"/>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message key="密码不能为空"/>
        </field-validator>
        <field-validator type="stringlength">
	        <param name="minLength">6</param>
	        <param name="maxLength">16</param>
	        <message>密码长度应在6~16个字符之间</message>
        </field-validator>
    </field>
</validators>

4.配置struts.xml文件

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

	<!-- Action所在包定义 -->
	<package name="chapter10web" extends="struts-default">
		<!-- 通过Action类处理才导航的的Action定义 -->
		<action name="Login" class="com.action.LoginAction">
			<result name="input">/login.jsp</result>
			<result name="success">/success.jsp</result>
		</action>
		  <action name="validate" class="com.action.LoginValidateAction">
            <result name="input">/loginvalidate.jsp</result>
            <result>/index.jsp</result> 
	</package>
</struts>

5.添加一个jsp页面 loginvalidate.jsp,放入一个struts标签

<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- struts2标签库调用声明 -->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
	<title>登录页面</title>
</head>
<body>
	<!-- form标签库定义,以及调用哪个Action声明 -->
	<s:form action="validate">
		<table width="60%" height="76" border="0">
				<!-- 各标签定义 -->
				<s:textfield name="username" label="用户名"/>
				<s:password name="password" label="密  码" />
				<s:submit value="登录" align="center"/>				
		</table>
	</s:form>
</body>
</html>

下面是struts2输入校验的规则:

 

 1.对必填校验

<field name="requiredValidatorField">
        <field-validator type="required">
            <message>必填内容</message>
        </field-validator>
</field>

 2.必填字符串校验

   <field name="requiredStringValidatorField">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>字符串必填校验</message>
        </field-validator>
    </field>

3.对int类型的校验

<field name="integerValidatorField">
          <field-validator type="int">
        <param name="min">1</param>
        <param name="max">10</param>
        <message key="validate.integerValidatorField" />
    </field-validator>
</field>

4.对日期的校验

<field name="dateValidatorField">
		<field-validator type="date">
		<param name="min">01/01/1990</param>
		<param name="max">01/01/2000</param>
		<message key="validate.dateValidatorField" />
		</field-validator>
	</field>

5.对email的校验

<field name="emailValidatorField">
        <field-validator type="email">
        <message key="validate.emailValidatorField" />
        </field-validator>
    </field>

6.对URL的校验

    <field name="urlValidatorField">
        <field-validator type="url">
        <message key="validate.urlValidatorField" />
        </field-validator>
    </field>

7.对字符串长度的校验

   <field name="stringLengthValidatorField">
        <field-validator type="stringlength">
            <param name="maxLength">4</param>
            <param name="minLength">2</param>
            <param name="trim">true</param>
    <message key="validate.stringLengthValidatorField" />
        </field-validator>
    </field>

8.对正则表达式的校验

 <field name="regexValidatorField">
        <field-validator type="regex">
        <param name="expression">.*\.txt</param>
        <message key="validate.regexValidatorField" />
        </field-validator>
    </field>

最后提一句:

Struts2中应用客户端输入校验

这里要用Struts2的标签,form的validate属性要设置为true,并且不要将theme属性指定为simple。

(simple表示Struts2将把这个解析成普通的HTML标签)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值