struts2 之 struts2数据校验
1. 数据校验一般分为2类:前端的校验(js校验),后端的校验(java代码);实际开发中大部分情况下都是采用js校验。在对数据安全要求较高的情况下可能会采用后端验证。
2. Struts2提供了后端验证机制。有两种方式来实现,一种是通过硬编码来实现,一种是通过校验框架来实现。在struts2如果使用struts2提供校验机制,那么必须继承ActionSuport类。该类中有一个vaildete方法,在处理的action类中重写该方法,那么在执行所有方法的时候,会执行validate方法。validate方法通过以后才执行处理方法。如果要验证特定的方法,那么需要为特定的方法指定其验证方法,命名规则,如果处理方法为xxx,那么验证方法为vaildateXxx。执行顺序为先执行validateXxx,在执行validate方法,在执行xxx方法。
3. 添加校验方法后执行流程:

4. 实现步骤:
(a).在处理类中添加校验方法:
public class UserAction extends ActionSupport{
private User user;
//添加的处理方法
public String add(){
System.out.println("执行add");
System.out.println("执行添加动作");
return Action.SUCCESS;
}
public void validateAdd(){
System.out.println("执行validateAdd");
if(user.getName().trim().length()==0){
//添加错误消息有两种做法,一种是全局的--addActionError
//一种局部的Field--addFieldError
//用户名不能为空
this.addFieldError("name", "用户名不能为空");
}
if(user.getName().trim().length()>0&&user.getName().trim().length()<4||user.getName().trim().length()>10){
this.addFieldError("name", "用户名长度为4到10之间");
}
}
@Override
public String execute() throws Exception {
System.out.println("执行execute");
return super.execute();
}
/**
* 该方法会在执行execute(会在所有的处理方法前)之前执行,该方法通过以后再执行处理方法
* 如果在validate方法中 有添加FieldError或者ActionError则该方法验证没通过
* 重写父类的校验方法 在方法中实现相关的校验规则
*
*/
public void validate() {
System.out.println("执行validate方法");
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
(b). 在页面中添加struts的标签库,并且将错误信息显示<s:fieldError>或者<s:actionError>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head> <body>
<form action="add.action" method="post">
用户名:<input type="text" name="user.name"/><s:fielderror fieldName="name"></s:fielderror><br>
密码:<input type="password" name="user.pwd"/><br>
年龄:<input type="text" name="user.age"/><br>
<input type="submit" value="submit"/>
</form>
</body>
</html> c) 在action的配置中一定要配置结果为input的跳转页面
<action name="add" class="cn.sxt.action.UserAction" method="add">
<result name="input">/add.jsp</result>
<result>/success.jsp</result>
</action>
5 .通过struts2提供的校验框架来实现数据校验:
(a). 在action所在包下添加校验规则文件 ActionClassName-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的验证规则 -->
<field name="user.name">
<!-- 在field中添加其验证规则 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户必须输入</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">10</param>
<message>用户名长度在${minLength}到10之间</message>
</field-validator>
</field>
</validators>
(b). 在页面中添加struts的标签库,并且将错误信息显示<s:fieldError>或者<s:actionError>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head> <body>
<form action="add.action" method="post">
用户名:<input type="text" name="user.name"/><s:fielderror fieldName="user.name"></s:fielderror><br>
密码:<input type="password" name="user.pwd"/><br>
年龄:<input type="text" name="user.age"/><br>
<input type="submit" value="submit"/>
</form>
</body>
</html>
(c). 在action的配置中一定要配置结果为input的跳转页面:
<action name="add" class="cn.sxt.action.UserAction" method="add">
<result name="input">/add.jsp</result>
<result>/success.jsp</result>
</action>
struts2 之 struts2数据校验的更多相关文章
- Struts2中validate数据校验的两种常用方法
本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器. 1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...
- struts2简单入门-数据校验
数据校验流程 校验数据的方式 重写execute方法在内部写校验代码 public class LoginAdminAction extends ActionSupport { private Use ...
- Struts2数据校验
Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...
- 使用Struts2实现数据校验
使用Struts2实现数据校验 为什么需要数据校验呢?答案很简单,假如当你登录想要京东,这时就需要数据校验了如果不输入用户名的话,那么就不会登陆成功,并且会提示出"请输入用户名"的 ...
- Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】
回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...
- (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)
转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml) 根据输入 ...
- struts2 数据校验
通过struts2中延续自xwork框架的validation.xml配置方式进行数据校验,因struts2 下存在三种请求参数的注入方式,固按照不同注入方式对validation.xml的配置进行总 ...
- 第六章、Struts2数据校验
一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...
- 06章 Struts2数据校验
一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...
- struts2:数据校验,通过XWork校验框架实现(validation.xml)
根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...
随机推荐
- C#中运算符的应用
c#中的运算符(只说我自己熟悉和常用的)一.算数运算:加 +减 -乘 *除 / (整型的除法是不算小数点的,也就是说结果是整数,余数舍去了,求余数看下面)求余数 % 加减乘好理解,整型的除法和求余数因 ...
- 1819: [JSOI]Word Query电子字典
1819: [JSOI]Word Query电子字典 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 729 Solved: 238[Submit][S ...
- java配置文件的读写
最近在做一个爬虫项目时,用到了读写配置文件的方法,记录下来以后可能用的到. Properties pro = new Properties(); boolean IsFirst = true; //从 ...
- ST HW2 fault & error & failure
Software Testing 3014218128 牛菲菲 Below are two faulty programs. Each includes a test case that result ...
- 100本最棒的web前端图书推荐
前端技术,要学习的内容太多了,当你不知道从哪里开始的时候,你就先从看书开始,边看书边码代码,这个是学习编程必须的过程,因为你看一百遍,还不如自己写一遍,写一遍,第一可以加印象,第二便于更好的理解. 熟 ...
- iOS多线程——同步异步串行并行
串行并行异步同步的概念很容易让人混淆,关于这几个概念我在第一篇GCD中有解释,但是还不够清晰,所以这里重写一篇博客专门对这几个概念进行区分: 先说一下队列和任务: (1)队列分为串行和并行,任务的执行 ...
- servlet中的过滤器 国际化
1. 过滤器 基本概念 过滤器是需要在xml中配置的. 为什么需用到过滤器? 项目开发中,经常会涉及到重复代码的实现! 注册 ----à Servlet [1. 设置编码] ----à JSP 修改 ...
- AQS阻塞唤醒工具LockSupport
LockSupport在JDK源码中描述为:构建锁和其他同步类的基本线程阻塞原语,构建更高级别的同步工具集.LockSupport提供的park/unpark从线程的粒度上进行阻塞和唤醒,park/u ...
- 1.WP8.1开发_去除闪动效果,直接进入首页
有时候希望打开软件的时候,不出现闪屏,而直接进入到第一个页面. 把第一个页面作为闪屏,可以制作一些进度条 和动画等... 很简单,有两种方法去除闪屏. 1.删除项目下 Assets 文件夹里面的Sp ...
- 解决mac os下mcss命令报错:env: node\r: No such file or directory
标题无“转载”即原创文章,版权所有.转载请注明来源:http://besteam.im/blogs/article/31/. 我一直对字符界面有抵触感,即使会用vim,我的linux脚本(python ...