9.struts2数据校验

手动编码方式:

	1.数据校验包含两种方式,第一种是手动编码完成数据校验方式,第二种是通过配置文件完成数据校验方式(重点掌握这种方式)。

	2.手动编码校验方式
		* 开发的步骤
			> 步骤一: 封装数据
			> 步骤二: 实现校验Action ,必须继承ActionSupport 类
			> 步骤三: 覆盖validate方法,完成对Action的业务方法 数据校验 this.addFieldError (ActionSupport提供)
			> 步骤四: 在jsp中 通过 <s:fieldError/> 显示错误信息

		* 针对的是Action中所有的方法进行校验。
			> 让Action继承ActionSupport类,重写ActionSupport类中的validate()方法,在该方法中完成数据校验。

		* 针对的是Action中某个方法完成校验。
			> 手动在Action中编写一个方法,方法名称是validate7要校验的方法的名称()	例如:public void validateAdd(){  }
				* Action中有一个save的方法,只校验save方法。
				* validateSave()	-- 使用该方法去校验save的方法

		* 数据校验测试的JSP页面代码
			<h3>手动数据校验</h3>
			<form action="${ pageContext.request.contextPath }/reg1.action" method="post">
				用户名:<input type="text" name="username" /><br/>
				密  码:<input type="password" name="password" /><br/>
				<input type="submit" value="注册"/><br/>
			</form>

	3.总结手动的校验的方式
		* 手动校验分成两种
			* 针对的是Action类中的所有的方法
				* 重写validate()方法,该方法是属于ActionSupport类,必须要继承该类。

			* 针对的是Action类中的某一个方法的校验。
				* 要继承ActionSupport类,校验某个方法,需要自己定义一个新的方法
					* 方法名称是规定:public void validateRegist(){	}

		* 编写的是Action都需要继承ActionSupport类			

		* 注意:代码校验 不适用于 大型项目, 流程数据复杂时,开发量和维护量 都会很大

demo3.jsp:

<%@ page language="java" 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>Insert title here</title>
</head>
<body>

<h3>手动数据校验</h3>

<s:fielderror/>

<form action="${ pageContext.request.contextPath }/reg4.action" method="post">
	用户名:<input type="text" name="username" /><br/>
	密  码:<input type="password" name="password" /><br/>
	<input type="submit" value="注册"/><br/>
</form>

</body>
</html>

RegistAction:

package demo3;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 手动的校验方式
 * @author mjl
 *
 */
public class RegistAction extends ActionSupport{

	//获取到表单输入的数据
	private String username;
	private String password;

	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * 手动校验数据的方法
	 * 校验Action类中的所有的方法(不符合开发的需求)
	 */
	/*public void validate() {
		//判断用户名是否为空
		if(username==null || username.trim().isEmpty()){
			//需要提示信息
			this.addFieldError("username", "用户名不能为空");
		}
	}*/

	/**
	 * 手动校验,只校验add方法
	 */
	public void validateAdd(){
		if(username==null || username.trim().isEmpty()){
			//需要提示信息
			this.addFieldError("username", "用户名不能为空");
		}
	}

	//添加用户
	public String add(){
		System.out.println("执行了");
		return NONE;
	}

	//查询用户
	public String sel(){
		System.out.println("查询了");
		return NONE;
	}
}

xml文件方式:

RegistAction2:

package demo3;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 使用xml的方式进行数据的校验
 * @author mjl
 *
 */
public class RegistAction2 extends ActionSupport{

	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 String add(){
		System.out.println("执行了。。。");
		return NONE;
	}
}

RegistAction2-validation.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="username">
 		<!-- 校验的规则 type要选择的规则:用户名是不能为空的,空格也不行 -->
 		<field-validator type="requiredstring">
 			<!-- 提示的信息 -->
 			<message>亲,用户名是不能为空的2!</message>
 		</field-validator>
 	</field>

 	<!-- 校验密码 -->
 	<field name="password">
 		<field-validator type="stringlength">
 			<!-- 规定密码的长度 -->
 			<param name="minLength">4</param>
 			<param name="maxLength">8</param>
 			<message>亲,密码的长度需要在4到8位2!</message>
 		</field-validator>
 	</field>
 </validators>

  

  

  

  

原文地址:https://www.cnblogs.com/syj1993/p/8519718.html

时间: 2024-09-29 18:21:00

9.struts2数据校验的相关文章

struts2 之 struts2数据校验

1. 数据校验一般分为2类:前端的校验(js校验),后端的校验(java代码):实际开发中大部分情况下都是采用js校验.在对数据安全要求较高的情况下可能会采用后端验证. 2.  Struts2提供了后端验证机制.有两种方式来实现,一种是通过硬编码来实现,一种是通过校验框架来实现.在struts2如果使用struts2提供校验机制,那么必须继承ActionSuport类.该类中有一个vaildete方法,在处理的action类中重写该方法,那么在执行所有方法的时候,会执行validate方法.va

深入分析JavaWeb Item46 -- Struts2数据校验与国际化

1.用户输入数据的校验 1.校验方式 a:客户端校验.(防君子防不了小人)在页面中写js脚本. 这样做的好处是: 输入错误的话提醒比较及时: 减轻服务器的压力 b.服务器端校验. 数据安全 ,整个应用阻止非法数据的最后防线 而在实际开发中通常选择:a+b 2.服务器端数据校验: 1.编程式校验:自己Action中编写一个校验代码(缺点:验证规则都写在了代码中) 前提:动作类继承ActionSupport,重写Validateable接口中的validate()方法 ,在该方法中完成验证. 步骤如

深入分析JavaWeb 46 -- Struts2数据校验与国际化

1.用户输入数据的校验 1.校验方式 a:客户端校验.(防君子防不了小人)在页面中写js脚本. 这样做的好处是: 输入错误的话提醒比较及时: 减轻服务器的压力 b.服务器端校验. 数据安全 ,整个应用阻止非法数据的最后防线 而在实际开发中通常选择:a+b 2.服务器端数据校验: 1.编程式校验:自己Action中编写一个校验代码(缺点:验证规则都写在了代码中) 前提:动作类继承ActionSupport,重写Validateable接口中的validate()方法 ,在该方法中完成验证. 步骤如

Struts2数据校验方法

方法: 1.在Action类中execute()方法中进行校验. 优点:Action类无需继承框架中的类. 缺点:(1)当有多个校验时,代码重复,违反高内聚,低耦合. 2.重写框架ActionSupport类中的validate()方法. 优点:包含this.addFieldError()方法,一旦调用,Action结束. 缺点:(1)需要继承框架中的ActionSupport类(侵入性). (2)方法1的(1)缺点. 3.使用多个validateXxx()方法,Xxx为方法名,首字母大写. 优

Struts2数据校验

1.表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式! Struts数据效验,通过拦截器完成:<interceptor      name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/> ①:代码方式验证Actio

Struts2 数据校验之四兄弟

现在是科技的时代,大多数人都在网上购物了, 我们都碰到过相同的问题,各大网站弄的那些各种各样的注册页面,相信大家都深有体会. 有了这验证就很好的保证了我们的信息的准确性和安全性. 接下来我给大家讲解一下用struts2怎么实现页面上简单的拦截. 方法一: 用execute()方法来实现 1.0创建一个UserInfo类 package cn.struts.entity; /** * Created by accp on 2017/3/6. */ public class UserInfo { /

Struts2学习第三天——保存登陆信息及数据校验

在JSP中服务器端保存数据的作用域通常有request.session.application,它们对应的Servlet API分别是HttpServletRquerst.HttpSession.ServletContext.同样在Struts2的控制器中也需要访问这些作用域. Struts2提供了一个ActionContext类,该类被称为Action上下文或者Action环境,Action可以通过该类访问最常用的ServletAPI. ServletAPI有多种访问方式: 1. Servle

Struts2之数据校验

时间:2017-1-11 11:09 --Struts2提供的数据校验 在开发中,请求参数是需要校验的:    客户端:过滤正常用户的错误操作,通过JS代码完成    服务器:Java代码 Struts2提供的校验是服务器端校验. 校验方式分为两种:    1.手动校验(编码校验)    2.配置校验(自动校验,基于Annotation,基于XML) 1.手动校验:    要求:Action类必须继承ActionSupport,需要重写validate()方法(是Validateable接口中的

Struts2(五)数据校验

一.概述 在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验. 下面通过两种方式来阐述Struts 2的数据校验功能. 二.重写validate方法 我们编写的Action一般继承与ActionSupport,而ActionSupport不仅实现了Action接口,还实现了Validatable接口,提供了数据校验功能.在Validatable接口中定义一个validate方法,重写该方法,