`

struts2 手工编写代码对action的方法进行输入校验

阅读更多

手工编写代码实现对action中所有方法的输入校验

 

通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFiledError()方法往系统的filedErrors添加校验失败信息(为了使用addFiled()方法,action可以继承ActionSupport),如果系统的filedErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:filederror/>显示失败信息。

 

    index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!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>
<s:fielderror></s:fielderror>
 <form action="${pageContext.request.contextPath}/person/personAction_save.action" method="post">
 姓名:<input type="text" name="username"><br>
 手机号:<input type="text" name="mobile"><br>
 
 <input type="submit" value="提交">
 </form>
</body>
</html>

    其中:<s:fielderror></s:fielderror>显示错误的提示信息

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="person" namespace="/person" extends="struts-default">
		<action name="personAction_*" class="com.siln.action.PersonAction"
			method="{1}">
			<result name="input">/index.jsp</result>
			<result>/WEB-INF/page/message.jsp</result>
		</action>
	</package>
</struts>    

 

package com.siln.action;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class PersonAction extends ActionSupport{
  
	private String username;
	private String mobile;
	
	public String update() {
		ActionContext.getContext().put("message", "更新成功");
		return "success";
	}
	
	public String save() {
		ActionContext.getContext().put("message", "保存成功");
		return "success";
	}
	
	@Override
	public void validate() {//对action中的所有方法进行校验
		if(this.username == null || "".equals(this.username)) {
			this.addFieldError("username", "用户名不能为空");
		}
		if(this.mobile == null || "".equals(this.mobile)) {
			this.addFieldError("mobile", "手机号不能为空");
		}else {
			if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile).matches()) {
				this.addFieldError("mobile", "手机号格式错误");
			}
		}
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

}

 

 

  

手工编写代码实现对action中指定方法的输入校验

通过validateXxx()方法实现,validateXxx()只会校验action中方法名为xxx的方法。其中Xxx的第一个字符大写。当某个数据校验失败时,我们应该调用addFiledError()方法往系统的filedErrors添加校验失败信息(为了使用addFiled()方法,action可以继承ActionSupport),如果系统的filedErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:filederror/>显示失败信息。

 

package com.siln.action;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class PersonAction extends ActionSupport{
  
	private String username;
	private String mobile;
	
	public String update() {
		ActionContext.getContext().put("message", "更新成功");
		return "success";
	}
	
	public String save() {
		ActionContext.getContext().put("message", "保存成功");
		return "success";
	}
	
	public void validateSave() {                             //对action中save()进行校验
		if(this.username == null || "".equals(this.username)) {
			this.addFieldError("username", "用户名不能为空");
		}
		if(this.mobile == null || "".equals(this.mobile)) {
			this.addFieldError("mobile", "手机号不能为空");
		}else {
			if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile).matches()) {
				this.addFieldError("mobile", "手机号格式错误");
			}
		}
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

}

 

分享到:
评论

相关推荐

    struts2 对action中的所有方法进行校验

    下面我们将深入探讨Struts2如何对Action中的所有方法进行校验。 首先,Struts2的校验机制基于两个主要组件:Validator和ValidationInterceptor。Validator负责定义校验规则,而ValidationInterceptor则是在执行...

    Struts2输入校验总结

    ### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...

    Struts2的输入校验

    首先,Struts2的输入校验机制允许开发者在不编写额外代码的情况下,对用户的输入进行验证。它内置了多种校验器,能够处理大部分常见的校验需求,如必填、长度限制、数据类型检查等。此外,对于更复杂的校验规则,...

    struts2输入校验深入总结

    Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...

    使用struts2进行输入校验

    本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:使用Action中的`validate()`方法和使用XML文件。 1. 使用Action中的`validate()`方法: 在Struts2中,每个Action类都可以包含一个名为`...

    struts2中的输入校验

    - **重写validate方法**:开发者可以重写Action类的`validate()`方法,对用户的输入进行验证。当表单提交时,Struts2会自动调用这个方法。如果在验证过程中发现错误,可以通过`addFieldError()`方法添加Field级别的...

    struts2输入校验总结

    Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...

    19对Action中所有方法进行输入校验.zip

    "19对Action中所有方法进行输入校验.zip"这个压缩包文件可能包含一个视频教程,教导开发者如何在Struts2的Action中对所有方法进行输入校验。 在Struts2中,输入校验通常通过以下几种方式进行: 1. **注解验证**:...

    Struts2的输入校验实例代码

    当用户提交表单时,Struts2会调用`validate`方法进行校验。如果校验失败,Struts2会自动重定向到`input`视图(即`register.jsp`),并在页面上显示错误信息(通过`s:fielderror`标签)。 6. **struts.xml配置**: ...

    Struts2 输入校验

    Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...

    struts2的输入校验

    struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    Struts2类型转换与输入校验 .zip

     熟悉和掌握Struts2内建校验的操作方法  实验环境与设备:  已经接入局域网的网络实验室,机器上装有IE浏览器等;  strtus2.5.8  实验内容: (1) 编写一个自定义类型转换器,并基于应用程序进行全局...

    Struts2 用户输入校验教程

    在Action类中,我们可以覆盖`execute()`方法,对用户输入进行检查。例如,在登录功能中,我们可以创建一个`LoginAction`类,包含`username`和`password`属性,并在`execute()`方法内编写验证逻辑。当验证失败时,...

    struts2对Action提交方法进行验证

    在实际的开发项目中,我们通常采用的是js对我们输入的值进行验证,例如,用户名的长度,密码长度,等等。但是这样做,不好之处就是我们可以...本附件为【Struts2】★☆之struts2对Action提交方法进行验证,下载源码!

Global site tag (gtag.js) - Google Analytics