ActionSupport类实现了Validateable、ValidationAware接口,

其中Validateable接口就是验证器接口,该接口有一个validate()方法,

validate()方法专门用来验证数据,实现的时候需要继承ActionSupport类,

所以编写一个Action类时重写validate()方法就可以实现自定义输入验证功能。

实例---流程还是老一套

1、在web.xml中配置核心控制器FilterDispatcher

<?xml version="1.0" encoding="UTF-8"?>
<web-app  version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <filter>  <!-- 配置Struts2核心Filter的名字 -->  <filter-name>struts2</filter-name>  <!-- 配置Struts2核心Filter的实现类 -->  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <!-- 配置Filter拦截的URL -->  <filter-mapping>  <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  </web-app>  

2、编写视图组件(register1.jsp)

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户注册页面</title>
</head>
<body><center>请输入信息……<hr><s:form action="register1" method="post"><table border="1"><tr><td><s:textfield name="userName" label="姓名" size="16" /></td></tr><tr><td><s:password name="userPassword" label="密码" size="18" /></td></tr><tr><td><s:textfield name="userAge" label="年龄" size="16" /></td></tr><tr><td><s:textfield name="userTelephone" label="电话" size="16" /></td></tr><tr><td><s:submit value="提交" /></td></tr></table></s:form></center>
</body>
</html>

3、编写业务控制器Action类(RegistAction1.java)

   这里重写了validate()方法

package validatorAction;import com.opensymphony.xwork2.ActionSupport;public class RegistAction1 extends ActionSupport{private String userName;private String userPassword;private int userAge;private String userTelephone;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}public int getUserAge() {return userAge;}public void setUserAge(int userAge) {this.userAge = userAge;}public String getUserTelephone() {return userTelephone;}public void setUserTelephone(String userTelephone) {this.userTelephone = userTelephone;}//重写validate()方法public void validate(){if(userName==null||userName.length()<6||userName.length()>16){addFieldError("userName","用户姓名的长度不符合要求,6~16位!");}if(userPassword.length()<6||userPassword.length()>16){addFieldError("userPassword","密码的长度不符合要求,6~16位!");}if(userAge>130||userAge<1){addFieldError("userAge","年龄不符合要求,1~130岁");}if(userTelephone.length()!=8){addFieldError("userTelephone","电话号码不符合要求,8位");}}public String execute(){return "success";}}

4、struts.xml配置对应的action(name="register1")

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts><package name="intercept" extends="struts-default"><interceptors><interceptor name="replace" class="interceptor.MyInterceptor" ></interceptor></interceptors><action name="public" class="interceptor.PublicAction"><result name="success">/success.jsp</result><result name="login">/success.jsp</result><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="replace"></interceptor-ref></action><action name="register1" class="validatorAction.RegistAction1"><result name="input">/validate/register1.jsp</result><result name="success">/validate/success1.jsp</result></action><action name="register2" class="validatorAction.Register2Action"><result name="input">/validate/register2.jsp</result><result name="success">/validate/success2.jsp</result></action></package></struts>

转载于:https://www.cnblogs.com/Donnnnnn/p/5675754.html

Struts2的手工自定义验证--完整实例代码相关推荐

  1. elementui 嵌套表单验证_vue elementUI 表单嵌套验证的实例代码

    一:表单一级验证 element中from组件内表单验证通过使用el-form标签,绑定model和rules属性进行表单验证 简单的表单验证很简单,在prop内绑定验证属性,然后在rules对象内定 ...

  2. php批量删除例子,php批量删除数据完整实例代码

    php批量删除数据完整实例代码2017-11-11 21:03 网站后台,一般都有相关的数据,以列表的形式来展现,也方便管理. 有些数据,我们可能需要对其批量进行操作,比如删除.更新日期等. 今天小编 ...

  3. 发布房源(四)——房源列表处理-完整实例代码

    房源列表处理--完整实例代码 处理图片的路径 处理相关链接的跳转 首页->去出租菜单 我的->我的出租 相关的回退链接 实例-房源列表管理 import React, { Componen ...

  4. php中分页公式,php分页函数完整实例代码

    本文分享一例php分页函数完整实例代码,使用此函数实现分页效果很不错.分享给大家供大家参考. 具体功能代码如下: /* * Created on 2011-07-28 * 使用方法: require_ ...

  5. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...

  6. (转载)Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    转载请注明出处:http://blog.csdn.net/anxpp/article/details/51512200,谢谢! 本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解 ...

  7. C#4.0 操作IE浏览器自动填表支付宝网站完整实例代码

    先前写了系列小工具开发笔记-IE自动填表器-第零篇:序后,发现很多网友问我同一个问题,就是如何使用C#(或者C++)操作IE浏览器(或者WinForm内嵌浏览器)里面的ActiveX控件.下面就以支付 ...

  8. Struts2国际化——完整实例代码

    一.介绍 国际化Internationalization的首末字符I和N之间字符数是18,简称I18N "国际化"是指一个应用程序在运行时,能够根据客户端请求所来自国家或地区语言的 ...

  9. android动画绘制扇形,Android自定义扇形倒计时实例代码

    一.概述 严格来说,我是Android小白,写的目的只是想作为知识储备而已-.但是想到别人或许会不小心搜到我的这篇,如果我只是简单的描述,别人有可能看不懂,说不定还被吐槽,那岂不是很冤吗? 所以,我还 ...

最新文章

  1. 艾伟_转载:string类与StringBuilder类性能比较
  2. laravel中token的使用方式
  3. matlab二维度矩阵转化三维_Matlab三维矩阵运算
  4. oracle locked time,ORACLE distributed_lock_timeout参数
  5. [设计模式] ------ 策略模式
  6. 解析poj页面获取题目
  7. 使用Python处理声音文件(五):绘制立体声音乐左右声道频谱
  8. UVA1226 LA3997 Numerical surprises【大数】
  9. 数库“SmarTag”数据体系正式登陆Factset另类数据市场
  10. 后端开发岗位要求汇总
  11. 一个java程序员自学IOS开发之路(五)
  12. 2021最常见的网络原理面试题【好文收藏】
  13. 网易云课堂-微专业Java
  14. 中职计算机应用基础word表格,计算机应用基础-word表格编辑.ppt
  15. matlab 解缠原理,相位解缠算法matlab
  16. _snprintf_s与_snprintf
  17. 【图像处理】gamma校正通俗解释及python实现(替代matlab imadjust)
  18. 嵌入式计算机系统简述,嵌入式系统简述
  19. Linux系统安装docker教程
  20. 【verilog学习23】HDLBits:Circuits_Sequential Logic_Finite State Machines

热门文章

  1. Linux C DNS 查询IP地址
  2. 深入研究Java中一个对象的初始化过程
  3. CLOUD信用管理设置
  4. Linux增加开放端口号
  5. java中运算符的优先级
  6. 深入理解计算机系统 第三部分程序间的交互和通信
  7. Python TCP服务器
  8. 1.struts1.x基本action的配置与使用
  9. Image Cup,我和几位师兄一起奋战!
  10. _linux文本过滤grep基础命令介绍