struts2:字段校验和非字段校验代码示例
一、为什么要使用struts2的validate验证框架
:使用struts2的验证框架,能够提高客户端提交的数据的安全性。通过验证,确保保存进数据库的信息是正确的
二、使用struts2的validate框架?
: 1.我们需要配置struts2项目的最基本的jar包。(validate验证框架是有"xwork-core"包提供的)
: 2.使用struts2自带的validate验证有两种方法
a):使用代码实现 验证功能 (也就是重写ActionSupport中的validate()方法) 在validate方法中进行编写我们需
要的验证功能 这里需要提几点的就是:
1.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate
2.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉 (这是为了避免
引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之
后再调用它 这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)
3.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的
action中的 执行方法名称(首字母大写)
附上一段代码:
- struts.xml:
 - <action name="*/*" class="*" method="test">
 - //这里的method指定action对象调用哪一个方法执行
 - //..此处省略
 - </action>
 - 对应的action类中的片段:
 - public String test(){//action操作的方法
 - //..此处省略
 - return "";
 - }
 - public void validateTest()
 - //这是我们自定义的validate方法 (validateTest) 这便是方法名
 - { //一定要记住大写test的首字母
 - //..此处省略
 - }
 - @override
 - Public String execute()//这是重写ActionSupport的方法
 - {
 - //..此处省略
 - return "";
 - }
 - @override
 - public void validate()//这是重写ActionSupport的方法 如果我们需要有
 - //execute方法并且还要对它接收的数据信息进行验证
 - {
 - //那么我们可以将方法名改成 valiateExecute()便可以了
 - //..此处省略
 - }
 
b):使用xml文件进行配置验证功能(建议使用xml配置文件进行validate的验证)
: 1.需要使用到xwork-core包下的 xwork-validate.dtd(版本根据项目进行选择,不过大体相同)
: 2.关于使用Xml进行验证 的两种情况: 全局验证 和局部验证
a):关于全局验证
全局就是针对整个action对象进行xml验证
当我们使用全局验证时候需要在 action对象的同目录下创建一个xml配置文件
文件名是由 : action对象的名称+(-validation.xml)
b):关于局部验证
局部验证是针对action对象中的某一个方法进行xml验证
使用局部验证的时候同样要在 action对象的同目录下创建一个xml配置文件
不过使用局部验证需要在struts.xml 中进行配置
代码如下:(struts.xml)
- <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 - <package name="struts2" extends="struts-default">
 - //这一个<action>主要针对整个action对象
 - <action name="register"class="org.viancent.action.RegisterAction">
 - <result name="success">/show.jsp</result>
 - <result name="input"> /register.jsp</result>
 - </action>
 - //这个<action>主要针对action的某一个方法 (采用了通配符 * 与 {1} 的值是相同的)
 - <action name="register_*" class="org.viancent.action.RegisterAction"method="{1}">
 - <result name="success">/show.jsp</result>
 - <result name="input"> /register.jsp</result>
 - </action>
 - </package>
 
//如果我们需要访问action类中的test方法 则表单上可以这样写 <s:action="register_test">
所以该validate框架的xml配置文件名就是:action对象名+(-register_test-validation.properties)
:3.使用struts2的validate框架有两种验证类型
- 下面给出一个实例:
 - action对象:
 - package org.viancent.action;
 - import java.util.Date;
 - import com.opensymphony.xwork2.ActionSupport;
 - public class RegisterAction extends ActionSupport {
 - private String username;
 - private String password;
 - private String repassword;
 - private int age;
 - private Date birthday;
 - private String users;
 - public String getUsers() {
 - return users;
 - }
 - public void setUsers(String users) {
 - this.users = users;
 - }
 - 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;
 - }
 - public String getRepassword() {
 - return repassword;
 - }
 - public void setRepassword(String repassword) {
 - this.repassword = repassword;
 - }
 - public int getAge() {
 - return age;
 - }
 - public void setAge(int age) {
 - this.age = age;
 - }
 - public Date getBirthday() {
 - return birthday;
 - }
 - public void setBirthday(Date birthday) {
 - this.birthday = birthday;
 - }
 - @Override
 - public String execute() throws Exception {
 - // TODO Auto-generated method stub
 - return super.execute();
 - }
 - // 自定义的执行方法
 - public String test() throws Exception {
 - System.out.println("test method invoked!");
 - // TODO Auto-generated method stub
 - return super.execute();
 - }
 - // 自定义的校验方法
 - public void validateTest() {
 - System.out.println("validateTest method invoked!");
 - }
 - @Override
 - public void validate() {
 - System.out.println("validate method invoked!");
 - if (null == this.getPassword()
 - || "".equals(this.getPassword()) || null ==
 - this.getRepassword()
 - || "".equals(this.getRepassword())) {
 - return;
 - }
 - if (!this.getPassword().equals(this.getRepassword())) {
 - this.addFieldError("repassword",
 - "repassword should be same password");
 - }
 - }
 - }
 
struts.xml的信息:
- <struts>
 - <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 - <package name="struts2" extends="struts-default">
 - <action name="register" class="org.viancent.action.RegisterAction">
 - <result name="success">/show.jsp</result>
 - <result name="input"> /register.jsp</result>
 - </action>
 - <action name="register_*" class="org.viancent.action.RegisterAction"
 - method="{1}">
 - <result name="success">/show.jsp</result>
 - <result name="input"> /register.jsp</result>
 - </action>
 - </package>
 - </struts>
 
局部validate框架的xml配置信息(RegisterAction-register_test-validation.xml)
- <validators>
 - <field name="username"> //指明是对哪一个属性进行验证
 - <field-validator type="requiredstring"> //验证的类型
 - <param name="trim">true</param>
 - <message>username should be notblank!</message>
 - //如果错误显示给客户端的信息
 - </field-validator>
 - <field-validator type="stringlength">
 - <param name="minLength">6</param>
 - <param name="maxLength">10</param>
 - <message>username should be not between${minLength} and ${maxLength}</message>
 - </field-validator>
 - </field>
 - <field name="age">
 - <field-validator type="required">
 - <message>age should be not blank!</message>
 - </field-validator>
 - <field-validator type="int">
 - <param name="min">1</param>
 - <param name="max">150</param>
 - <message>age should be between ${min} and ${max}</message>
 - </field-validator>
 - </field>
 - <field name="birthday">
 - <field-validator type="required">
 - <message>birthday should be not blank!</message>
 - </field-validator>
 - <field-validator type="date">
 - <param name="min">1990-10-10</param>
 - <param name="max">2011-3-14</param>
 - <message>birthday should be between ${min} and ${max} </message>
 - </field-validator>
 - </field>
 - </validators>
 
全局validate框架的xml配置信息(RegisterAction-validation.xml)
- <validators>
 - <field name="users">
 - <field-validator type="requiredstring">
 - <message>users should be not blank!</message>
 - </field-validator>
 - <field-validator type="stringlength">
 - <param name="minLength">6</param>
 - <param name="maxLength">10</param>
 - <message>users should be between ${minLength} and ${maxLength}</message>
 - </field-validator>
 - </field>
 - </validators>
 
view 界面的jsp信息:
- register.jsp:
 - <body style="text-align: center">
 - <s:form action="register_test">//服务端验证
 - <s:textfield name="username" id="username" label="username"></s:textfield>
 - <s:password name="password" id="password" label="password"></s:password>
 - <s:password name="repassword" id="repassword" label="repassword"></s:password>
 - <s:textfield name="age" id="age" label="age"></s:textfield>
 - <s:textfield name="birthday" id="birthday" label="birthday"></s:textfield>
 - <s:submit></s:submit>
 - <s:reset></s:reset>
 - </s:form>
 - <s:form action="register" validate="true">//客户端验证 validate="true"(关键点)
 - <s:textfield name="users" label="users" id="users"></s:textfield>
 - <s:submit></s:submit>
 - </s:form>
 - </body>
 
show.jsp:
- <body>
 - <s:property value="username"/>
 - <s:property value="password"/>
 - <s:property value="age"/>
 - <s:property value="birthday"/>
 - <s:property value="users"/>
 - </body>
 
这里说明一下 validate xml验证的规则
struts2:字段校验和非字段校验代码示例的更多相关文章
- [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
		
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
 - java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数
		
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构
 - Struts(二十四):短路验证&重写实现转换验证失败时短路&非字段验证
		
短路验证: 若对一个字段使用多个验证器,默认情况下会执行所有的验证.若希望前面的验证器没有通过,后面的验证器就不再执行,可以使用短路验证. 1.如下拦截器,如果输入字符串,提交表单后,默认是会出现三个 ...
 - RAC集群数据库连库代码示例(jdbc thin方式,非oci)
		
1.RAC集群数据库连库代码示例(jdbc thin方式,非oci):jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc ...
 - mysql——修改表名、修改字段名、修改字段数据类型、增加字段、删除字段、修改字段排列位置、修改存储引擎、删除表 (示例)
		
一.创建表和插入数据: ), mz ), bz ) ); ,'sww','sww01'); ,'aww','aww02'); ,'qww','qww03'), (,'eww','eww04'), (, ...
 - TypeLoadException: 未能从程序集“ECS.GUI.Define, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“ECS.GUI.Define.ArmgAimPos”,因为它在 4 偏移位置处包含一个对象字段,该字段已由一个非对象字段不正确地对齐或重叠
		
TypeLoadException: 未能从程序集"ECS.GUI.Define, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ...
 - Struts2学习笔记(九)——数据校验
		
Struts2的数据校验属于服务器端校验,Struts2 支持校验方式 : 手动校验(代码校验) :在服务器端通过编写java代码,完成数据校验 自动校验(配置校验) :XML配置校验(主流) 和 注 ...
 - struts2学习笔记--使用Validator校验数据
		
我们在进行一些操作是需要对用户的输入数据进行验证,比如网站的注册,需要对各个数据项进行数据校验,Struts2提供了一些默认的校验器,比如数字的检测,邮箱的检测,字符串长度的检测等等. 常用的Vali ...
 - 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等
		
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...
 
随机推荐
- Linux 下MySql 重置密码
			
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
 - HDU4609 & FFT
			
关于这道题请移步kuangbin爷的blog:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html 感觉我一辈子也不能写出这么 ...
 - oracle 取小数位数
			
select ltrim('124532.62879'-floor('124532.62879'),'0.') from dual;select length(66695) from dual; 这两 ...
 - Linux查看进程PID信息
			
ps -ef|grep 进程名 可检索到具体进程PID以及启动命令行信息 ls -l /proc/进程ID Linux在启动程序时会在 /proc/PID 目录下以PID为名称创建一个文件存储相关进程 ...
 - ubuntu12.04下root启动wireshark报错解决办法
			
在ubuntu11.10以后版本中发现,安装wireshark后用root权限启动,弹出如下错误: Running as user “root” and group “root”. This coul ...
 - MySQL语句执行顺序
			
执行顺序:见:http://www.cnblogs.com/rollenholt/p/3776923.html 下面我们来具体分析一下查询处理的每一个阶段 FORM: 对FROM的左边的表和右边的表计 ...
 - *HDU2510 DFS
			
符号三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
 - C#中图片新增水印
			
/// <summary> /// 在图片上生成图片水印 /// </summary> /// <param name="Path">原服务器图 ...
 - Secure Digital
			
https://en.wikipedia.org/wiki/Secure_Digital#Technical_details Secure Digital (SD) is a non-volatile ...
 - canvas 拖拽实现
			
Canvas 依赖分辨率 不支持事件处理器 弱的文本渲染能力 能够以 .png 或 .jpg 格式保存结果图像 最适合图像密集型的游戏,其中的许多对象会被频繁重绘 SVG 不依赖分辨率 支持事件处理器 ...