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 ...
随机推荐
- Keras网络层之“关于Keras的层(Layer)”
关于Keras的“层”(Layer) 所有的Keras层对象都有如下方法: layer.get_weights():返回层的权重(numpy array) layer.set_weights(weig ...
- vuejs项目打包成APP后,首页不显示
- 001-ant design pro安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...
- js检测数组类型
1.instanceof 当只有一个全局执行环境时适用,如果包含多个框架,就存在两个以上不同版本的Array构造函数,如果从一个框架向另一个框架传递数组,传入的数组与在第二个框架中原生创建的数组分别具 ...
- 测试Windows live Writer
private String GetRandomint(int codeCount) { Random random = new Random(); string min = "" ...
- 应用服务器支持 HTTPS
当前业务系统中支持 HTTP 协议和 HTTPS 协议的 Web.config 文件并不相同.在默认情况下,不能同时支持 HTTPS 和 HTTP 协议. 生成部署包 若需支持 HTTPS 协议,请将 ...
- Java最新趋势之Spring阅读
(原文地址:点我) This Week in Spring: Cloud Native and the State of Java This compilation of news and tutor ...
- Windows netstat 查看端口、进程占用(转)
本文转自:http://ywsm.iteye.com/blog/510670 目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. 操作:操作分为两步: 1)查 ...
- python学习笔记:函数参数
1. 位置参数:一般的参数 2. 默认参数: def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s 参数里有默认赋 ...
- Bean的id、name、ref、refid
Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...