9.struts2数据校验

Posted 重庆刘亦菲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>		

  

  

  

  

以上是关于9.struts2数据校验的主要内容,如果未能解决你的问题,请参考以下文章

Android App 安全的HTTPS 通信

(补充)9.Struts2中的OGNL表达式

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

Struts2请求参数校验

报错:✘ http://eslint.org/docs/rules/indent Expected indentation of 0 s paces but found 2(代码片段

报错:✘ http://eslint.org/docs/rules/indent Expected indentation of 0 s paces but found 2(代码片段