struts2框架之输入校验(参考第二天学习笔记)
输入校验:
1. 分类
客户端校验:javascript,它是用户体验而已,可以绕开。
服务器端校验
* 代码校验
1). 要求Action必须继承ActionSupport
2). 重写ActionSupport类的validate()方法。
添加校验逻辑!
> 如果出错,添加fielderror即可。
* 配置校验
2. 原理
validation拦截器,会调用Action的validate()方法,我们自己编写的validate()方法,它会在校验失败时向当前Action中添加字段错误。
workflow拦截器,它会查看当前Action是否存在错误,如果存在,跳转到input,我们必须为当前Action提供input结果
-------------------------
局部校验
一个Action中可以有多个请求处理方法。每个请求处理方法应该拥有自己的校验方法,而且还要拥有自己的input结果。
局部校验方法命名规则:validate请求处理方法名称(),例如请求处理方法的名称为login,那么它的校验方法名称为:validateLogin()
如果同时提供了局部校验方法和全局校验方法,那么是先局部后全局。
通常有局部就不要再定义全局校验。
让局部校验都拥有自己的input结果。
在请求处理方法上配置InputConfig,给出resultName成员,它来指定当前请求处理方法的独有的input结果。
// 当login()方法的校验方法校验失败时,会跳转到loginInput结果,这说明我们需要在<action>中配置名为loginInput的<result>。
@InputConfig(resultName="loginInput")
public String login() {
...
}
==================================
==================================
==================================
xml 配置校验
<action name="aaa" class="cn.itcast.MyAction"/>
校验规则在Struts中都是类,每个校验类都叫校验器,每个校验器都有自己的validate()方法,即校验方法。
我们只需要把值传递给它就可以完成校验。
非空 requreid
长度 stringlength --> 字符串,最大长度和最小长度
日期 date
int范围 int
url url
mail mail
regex regex
<field name="username">
<field-validator name="requiredstring">
<message>用户名不能为空!</message>
</field-validator/>
<field-validator name="stringlength">
<param name="minLength">3</param>
<param name="maxLength">10</param>
<message>用户名必须在3 ~ 10之间!</message>
</field-validator/>
</field>
全局校验
1. 文件的位置:Action同包下
2. 文件的名称:Action名称-validation.xml
3. 文件的内容:已经知道了。
==================================
XML的局部校验
1. 文件的位置:Action同包下
2. 文件的名称:Action名称-访问的<action>名称-validation.xml
3. 文件的内容:同上。
struts2框架之输入校验(参考第二天学习笔记)的更多相关文章
- struts2框架之类型转换(参考第二天学习笔记)
类型转换 1. 什么是类型转换 刚才学习了封装请求参数,把表单数据封装到Action(模型)的属性中.表单中的数据都是String类型,但Action(模型)的属性不一定什么类型. 将来我们还需要数据 ...
- struts2框架之国际化(参考第二天学习笔记)
国际化 1. 回忆之前的国际化 1). 资源包(key=字符串) > 命名:基本名称+local部分.properties,res_zh.properties,res_zh_CN.propert ...
- struts2框架之拦截器(参考第二天学习笔记)
拦截器 1. 什么是拦截器 1). 与JavaWeb中的Filter比较相似. 2). 拦截器只能拦截Action!!! 2. Struts中定义了很多拦截器,其中defaultStack中的拦截器会 ...
- struts2框架之请求参数(参考第二天学习笔记)
获取请求参数 请求参数:表单中的数据,或者是超链接中的数据. 1. 得到request,再通过request来获取.2. 属性驱动 在Action中提供与表单字段名称相同的属性即可. 而一个名为par ...
- 《Linux内核分析》第二周学习笔记
<Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...
- Linux内核分析第二周学习笔记
linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- AS开发实战第二章学习笔记——其他
第二章学习笔记(1.19-1.22)像素Android支持的像素单位主要有px(像素).in(英寸).mm(毫米).pt(磅,1/72英寸).dp(与设备无关的显示单位).dip(就是dp).sp(用 ...
随机推荐
- freemarker写入word【未完,待续】
. java基于feemarker 生成word文档
- python--numpy、pandas
numpy 与 pandas 都是用来对数据进行处理的模块, 前者以array 为主体,后者以 DataFrame 为主体(让我想起了Spark的DataFrame 或RDD) 有说 pandas 是 ...
- jsp实现验证码登陆
login.jsp: <%@ page language="java" import="java.util.*,com.cn.servlet.*" pag ...
- Linux 用top命令查看CPU和内存使用情况
直接 top 回车 PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享 ...
- asp.net网页注释
asp.net页面上有一个asp控件,结果 使用<!-- -->注释不起作用,最后发现使用<%-- --%>注释可以.
- 解决XP系统桌面图标蓝底
方法1:在桌面上点击右键,在"排列图标"里去掉"锁定桌面的web项目"的勾. 方法2:右键点击 的电脑 -- 属性 -- 高级 -- 点击"性能&qu ...
- [译]A NON-TRIVIAL EXAMPLE OF MEDIATR USAGE
原文 来看看我目前的一个项目.这个是一个多租户的财务跟踪系统.有一个组织继承的关系.首先得新建一个组织. 表单如下: 这个表单能让用户输入关于组织的一些信息,包括active directory组,一 ...
- jsp快速开始
[greeting.jsp] <%@ page contentType="text/html;charset=UTF-8" language="java" ...
- 【51nod 1288】汽油补给
Description 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市 ...
- luogu P3201 [HNOI2009]梦幻布丁
传送门 先考虑暴力,显然每次是把一个位置集合和另一个集合合并,同时维护答案,合并的过程中如果两个集合每有一对元素相邻,答案就减1 优化暴力的话,说到合并,怎么能不想起启发式合并呢?每次把一个大小小的集 ...