strus2验证框架
为什么要用验证框架?
当验证规划比较复杂时,Action类的代码江边的非常繁琐,假如我们要对电话号码进行验证,是非常麻烦的。
验证框架的优点
Struts2中内置了一个验证框架,将常用的验证规则进行了编码实现,使用验证框架时,用户无需再进行编码,只要在外部配置文件中指定某个字段需要进行的验证类型,并提供出错误信息即可,从而大大减轻了开发者的负担,提高开发效率
接下来我们先看一个案例了解一下
jsp页面(以注册为例)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>注册页面</title> </head> <body>
<h2>用户注册</h2> <s:form action="regist" method="post">
<s:textfield name="info.username" label="用户名" ></s:textfield>
<br/> <s:textfield name="info.phone" label="电话号码"></s:textfield>
<br/> <s:textfield name="info.password" label="密码"></s:textfield>
<br/> <s:textfield name="okpwd" label="确认密码"></s:textfield>
<br/> <s:submit value="注册"></s:submit> </s:form> </body>
</html>
regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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%>"> <title>成功页面</title> </head> <body>
欢迎您!${info.username }
</body>
</html>
success.jsp
实体类(UserInfo)
package cn.happy.entity;
public class UserInfo {
private String username;
private String password;
private String phone;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
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;
}
}
UserInfo.java
接下来看一下Action包下的类
package cn.happy.action;
import cn.happy.entity.UserInfo;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private UserInfo info;
private String okpwd;
@Override
public String execute() throws Exception {
return SUCCESS;
}
public UserInfo getInfo() {
return info;
}
public void setInfo(UserInfo info) {
this.info = info;
}
public String getOkpwd() {
return okpwd;
}
public void setOkpwd(String okpwd) {
this.okpwd = okpwd;
}
}
UserAction.java
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <!-- 用户名:不能为空 长度在6-10之间 -->
<field name="info.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator> <field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>用户名长度必须在${minLength}和${maxLength}之间</message>
</field-validator> </field> <!-- 验证密码-->
<field name="info.password">
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator>
</field> <!-- 确认密码 --> <field name="okpwd">
<field-validator type="fieldexpression">
<param name="expression">info.password==okpwd</param>
<message>密码和确认密码必须一致</message>
</field-validator>
</field> <!-- 验证电话号码 --> <field name="info.phone">
<field-validator type="requiredstring">
<message>电话号码不能为空</message>
</field-validator>
</field> <field name="info.phone">
<field-validator type="regex">
<param name="regex">^(\d{3,4}-){0,1}(\d{7,8})$</param>
<message>电话号码格式不正确</message>
</field-validator>
</field> </validators>
UserAction-validation.xml
常用验证规则:

编写配置文件(struts.xml)
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 修改文件 tomact不用重启 -->
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="regist" class="cn.happy.action.UserAction">
<result name="success">success.jsp</result>
<result name="input">regist.jsp</result>
</action>
</package>
</struts>
struts.xml
jar包

实现效果:

实现数据校验的流程
① 对输入的数据首先进行类型转换,并封装成Action属性
② 如果类型转换出现错误,就将错误提示保存到ActionContext,并封装到fieldError中
③ 类型转换执行完毕后,会根据项目的配置执行验证框架的校验,也可能通过执行validate()或者validateXxx()方法进行校验
④ 如果经过以上步骤都没有出现错误,那么将直接调用Action里用于处理用户请求的方法,然后根据结果类型转入相应的视图资源。一旦出现了错误,那么系统将直接返回输入数据的视图资源,后者通常由workflow拦截器处理
strus2验证框架的更多相关文章
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- 【积累】validate验证框架的使用
validate验证框架的使用:用验证框架可以很方便的验证前端页面输入的内容可以自定义验证方法 内容:0:环境搭建 1:基础用法 2:自定义用法 0:基本环境的搭建 0.1:下载js文件 0.2:引入 ...
- Struts2验证框架实例
今天写了个Struts验证框架的实例,总算把验证框架弄清楚了. 上一篇Struts实例的action没有继承ActionSupport类,虽然也可以实现action的功能,但是却不能应用Struts提 ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- 【转】jquery validate验证框架与kindeditor使用需二次提交的问题
原文:http://blog.csdn.net/wlsyn/article/details/11536399在使用jquery的验证框架对kindeditor富文本编辑器进行验证的过程中,发现提 交时 ...
- ValidationSugar表单验证框架-支持ASP.NET MVC ASP.NET WebFroM
ValidationSugar表单验证框架的优点: 1.支持javascript端和后端的双重验证 (前端目前依赖于jquery.validate.js,也可以自已扩展) 2.代码简洁 3.调用方便 ...
- Struts2(十二)使用验证框架验证数据较验
一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- 关于struts2 验证框架在联网的时候可以用,不联网不起作用的问题
这是一个让我很头痛的问题,我是在一个其他的项目框架的基础上来开发新的项目. 当使用struts验证框架时,突然发现这个验证不起作用了,我就纳闷了之前用这个开发的项目好好的怎么到我这就不能用了呢? xm ...
随机推荐
- 一个简单的WPF字体选择器实现
很久没有写博客了. 这是放暑假中的第一篇博客,以后会多多更新!!! 这就是我写的一个字体选择器,界面如下: 本程序用到的技术比较简单,仅仅是用了Font类的几个方法和数据绑定而已. 首先建一个四行两列 ...
- PHP json字符串,格式化缩进显示
PHP json字符串,格式化显示 /** * 格式化 */ class JsonFormatHelper { /** * json字符串缩进显示 * @param unknown $json * @ ...
- HibernateUtil工具类
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import org.slf4j.Logger; ...
- Disruptor-net 3.3.0
Disruptor 介绍 Disruptor 是LMX开源出来的java编写的一个并发消息处理器,在队列中一边生产者放入消息,另外一边消费者并行取出处理,其核心是根据现代CPU硬件缓存特点发明不同于通 ...
- JS图片自动和可控的轮播切换特效
点击这里查看效果:http://hovertree.com/texiao/js/1.htm HTML文件代码如下: <!DOCTYPE html> <html xmlns=" ...
- JavaScript变换表格边框颜色
效果查看:http://hovertree.com/texiao/js/2.htm 代码如下,保存到HTML文件也可以查看效果: <html> <head> <meta ...
- DatatableToJson JsonToDatatable
using Newtonsoft.Json;using Newtonsoft.Json.Converters; /// <summary> /// 将DataTable类型转为JSON类型 ...
- AlloyRenderingEngine入门
写在前面 AlloyRenderingEngine是一款非常快速的渲染引擎,目前该项目已经合并至 https://github.com/AlloyTeam/AlloyGameEngine/ , 属于A ...
- iOS开发---有用的网址(持续更新)
http://ios.jobbole.com/88403/ iOS开发之OCR光学识别储蓄卡以及信用卡 http://ios.jobbole.com/87649/ iOS中常用的第三 ...
- HTML块级标签汇总(小篇)
块级元素,简单来说,就是自己独占一行的元素.其特点: ①总是在新行上开始: ②高度,行高以及外边距和内边距都可控制: ③宽度缺省是它的容器的100%,除非设定一个宽度. ④它可以容纳内联元素和其他块元 ...