Struts09---验证框架
01.创建登录界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="user/login" method="post">
<s:textfield name="user.name" label="姓名"/>
<s:textfield name="user.password" label="密码"/>
<s:submit value="登录"/>
<%-- 全局的validate()会拦截我们所有的请求 --%>
<a href="user/change">切换验证码</a> </s:form>
</body>
</html>
02.struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts> <package name="user" namespace="/user" extends="default">
<!-- 登录验证 -->
<action name="login" class="cn.bdqn.action.UserAction" method="login">
<result name="input">/login.jsp</result>
<result>/success.jsp</result>
</action>
<!-- 切换验证码 -->
<action name="change" class="cn.bdqn.action.UserAction" method="change">
<result>/success.jsp</result>
</action> </package>
</struts>
03.Action
/**
* 验证框架:
* 01.局部验证
* 02.全局验证 使用 validate
* 03.全局验证 使用xml 推荐***
*
*
*/ public class UserAction extends ActionSupport{ private User user; //验证的对象 //默认
public String execute(){
System.out.println("默认执行的execute");
return SUCCESS;
} //登录的方法
public String login(){
System.out.println("进入了login()");
//如果有错误!
if (hasErrors()) {
return INPUT; //返回登录界面
}
return SUCCESS;
} //切换验证码
public String change(){
System.out.println("进入了change()");
return SUCCESS;
} /**
* 全局的验证 只要进入了我们的Action 这个方法就必须先执行!
* 重写了ActionSupport类中的validate() @Override
public void validate() {
System.out.println("进入了validate()");
if (StringUtils.isBlank(user.getName())) {//用户名为空返回true!
addFieldError("user.name", "用户名不能为空");
}
if (StringUtils.isBlank(user.getPassword())) {//密码为空返回true!
addFieldError("user.password", "密码不能为空");
}
}*/ /**
* 验证指定的方法
* 需要验证的方法名 首字母大写 !前面加上validate
* 如果和全局验证同时存在 ,优先执行指定方法名称的验证!
*/
public void validateLogin() {
System.out.println("进入了validateLogin()");
if (StringUtils.isBlank(user.getName())) {//用户名为空返回true!
addFieldError("user.name", "用户名不能为空");
}
if (StringUtils.isBlank(user.getPassword())) {//密码为空返回true!
addFieldError("user.password", "密码不能为空");
}
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }
04.创建成功界面! 省略!
validate拦截器的底层搜索!
01.找到struts-default.xml文件中的validation对应的类

02.进入其对应的父类

03.继续观察

04.得到了 方法名变大写


使用xml验证框架! 首先保证xml文件和Action在同一个包中!
package cn.bdqn.action; import java.sql.SQLException; import org.apache.commons.lang3.StringUtils; import cn.bdqn.bean.User; import com.opensymphony.xwork2.ActionSupport;
/**
* 验证框架:
* 01.局部验证
* 02.全局验证 使用 validate
* 03.全局验证 使用xml 推荐*** 前提验证文件 必须和 action在一个包中!
* 001.验证全局 : ActionClassName-validation.xml
* 002.验证指定的: ActionClassName-ActionName-validation.xml
*
* ActionClassName:就是我们Action的类名! 在本类中就是对应UserAction!
* ActionName:指的的struts.xml文件中action节点中 name的属性值!
*
*/ public class UserAction extends ActionSupport{ private User user; //验证的对象 //默认
public String execute(){
System.out.println("默认执行的execute");
return SUCCESS;
} //登录的方法
public String login(){
System.out.println("进入了login()"); //如果有错误!
if (hasErrors()) {
return INPUT; //返回登录界面
}
return SUCCESS;
} //切换验证码
public String change(){
System.out.println("进入了change()");
return SUCCESS;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }
<?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">
<!-- 验证文件 必须和 action在一个包中! -->
<validators>
<field name="user.name">
<field-validator type="requiredstring"><!--用户名不能为空 -->
<param name="trim">true</param>
<message><![CDATA[用户名不能为空!!!XML]]></message>
</field-validator>
<field-validator type="stringlength"><!--用户名的长度-->
<param name="minLength">5</param>
<param name="maxLength">10</param>
<message><![CDATA[用户名必须在5--10之间!!!XML]]></message>
</field-validator>
</field> <field name="user.password">
<field-validator type="requiredstring"><!--密码不能为空 -->
<param name="trim">true</param>
<message><![CDATA[密码不能为空!!!XML]]></message>
</field-validator>
<field-validator type="regex"><!--密码的长度-->
<param name="trim">true</param>
<param name="regex"><![CDATA[^[0-9a-zA-Z]{5,10}$]]></param>
<message><![CDATA[密码必须在5--10之间!!!XML]]></message>
</field-validator>
</field> </validators>
下面的
下面的


Struts09---验证框架的更多相关文章
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- strus2验证框架
为什么要用验证框架? 当验证规划比较复杂时,Action类的代码江边的非常繁琐,假如我们要对电话号码进行验证,是非常麻烦的. 验证框架的优点 Struts2中内置了一个验证框架,将常用的验证规则进行了 ...
- 【积累】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 ...
随机推荐
- PHP memcache的使用教程
(结尾附:完整版资源下载) 首先,为什么要用memcached?如果你看过InnoDB的一些书籍,你应该知道在存储引擎那一层是由一个内存池的.而在内存池中 又有一个缓冲池.而缓冲池就会缓冲查找的数据, ...
- Angular路由参数传递
一.路由时传递参数的方式 1.在查询参数中传递数据 //页面 <a routerLink="/product" [queryParams]="{id:1}" ...
- NoSQL选型及HBase案例详解(转)
从 NOSQL的类型到 常用的产品,我们已经做过很多关于NoSQL的文章,今天我们从国内著名的互联网公司及科研机构的实战谈一下NoSQL数据库. NoSQL一定程度上是基于一个很重要的原理—— CAP ...
- 吴超老师课程--HBASE的Java_API
public static void main(String[] args) throws IOException { String tableName="hbase_tb"; S ...
- IOS UIApplicationMain函数
对于UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString ...
- vue-cli中的build.js配置文件详细解析
转载自:https://www.cnblogs.com/ye-hcj/p/7096341.html这是vue-cli脚手架工具的生产环境配置入口 package.json中的"build&q ...
- DNS域名解析的配置
/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的 ...
- ijkplayer实现IMediaDataSource
由于ijkplayer不能识别android.resource类型的资源在播放raw中的文件的时候用IjkMediaPlayer不能正常播放,实现IMediaDataSource为IjkMediaPl ...
- 【React Native开发】React Native进行签名打包成Apk
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50525976 本文出自:[江清清的博客] (一)前言 [好消息]个人 ...
- react native 之异步请求
第一章 异步请求 fetch的运用 在react native 中异步请求一般用fetch这个方法, fetch的格式如下: const params ={ "charset" ...