- 浏览: 1149010 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- Java Foundation (41)
- AI/机器学习/数据挖掘/模式识别/自然语言处理/信息检索 (2)
- 云计算/NoSQL/数据分析 (11)
- Linux (13)
- Open Source (12)
- J2EE (52)
- Data Structures (4)
- other (10)
- Dev Error (41)
- Ajax/JS/JSP/HTML5 (47)
- Oracle (68)
- FLEX (19)
- Tools (19)
- 设计模式 (4)
- Database (12)
- SQL Server (9)
- 例子程序 (4)
- mysql (2)
- Web Services (4)
- 面试 (8)
- 嵌入式/移动开发 (18)
- 软件工程/UML (15)
- C/C++ (7)
- 架构Architecture/分布式Distributed (1)
最新评论
-
a535114641:
LZ你好, 用了这个方法后子页面里的JS方法就全不能用了呀
页面局部刷新的两种方式:form+iframe 和 ajax -
di1984HIT:
学习了,真不错,做个记号啊
Machine Learning -
赵师傅临死前:
我一台老机器,myeclipse9 + FB3.5 可以正常使 ...
myeclipse 10 安装 flash builder 4.6 -
Wu_Jiang:
触发时间在将来的某个时间 但是第一次触发的时间超出了失效时间, ...
Based on configured schedule, the given trigger will never fire. -
cylove007:
找了好久,顶你
Editable Select 可编辑select
Struts2 valiation:
分编程式验证、声明式验证、注解式验证。
声明式验证:
http://struts.apache.org/2.x/docs/validation.html
http://iehyou.iteye.com/blog/577214
http://hsw212.iteye.com/blog/300129
关于xxxAction-actionName-validation.xml:
关于validation配置文件的命名:
两种方式:
比如有如下action配置:
针对上例:
若validation配置文件名为UserAction-validation.xml,则UserAction的所有方法(这里有两个,execute方法和save方法)在执行前都会通过该校验文件做校验;
若validation配置文件名为UserAction-save-validation.xml,则只有UserAction的save方法在执行前会通过该校验文件做校验。
validation type required和requiredstring 的区别:
required validator
http://struts.apache.org/2.0.14/docs/required-validator.html
requiredstring validator:
http://struts.apache.org/2.0.14/docs/requiredstring-validator.html
编程式验证:
http://taink.iteye.com/blog/565690(or:http://51jsp.cn/a/struts/20100108/5545.html)
http://ttitfly.iteye.com/blog/150304
Q:如果同时使用了编程式和声明式验证验证了同一东西,会先执行哪个?
A:经验证,会先执行编程式验证。例子如下:
关于struts2验证框架出现的“Invalid field value for field "xxxField"”:
http://www.java3z.com/cwbwebhome/article/article2/21084.html
Interceptor:
http://www.blogjava.net/max/archive/2006/12/06/85925.html
为什么struts2控制台不打印出错信息:
http://guangyao-yao.iteye.com/blog/812279
struts2配合log4j打印异常栈信息:
http://tdcq.iteye.com/blog/706459
Struts2 i18n:
http://wuaner.iteye.com/blog/643987
分编程式验证、声明式验证、注解式验证。
声明式验证:
http://struts.apache.org/2.x/docs/validation.html
http://iehyou.iteye.com/blog/577214
http://hsw212.iteye.com/blog/300129
关于xxxAction-actionName-validation.xml:
引用
struts验证分为2种:Non-Field Validator 和 Field-Validator
expression效验器 求出ognl表达式的值。为true通过验证
引用
There are two ways you can define validators in your -validation.xml file:
1 <validator>
2 <field-validator>
Keep the following in mind when using either syntax:
The <validator> element allows you to declare both types of validators (either a plain Validator a field-specific FieldValidator).
如:
下面是一个Non-Field Validator:
下面是一个Field-Validator:
The <field-validator> elements are basically the same as the <validator> elements except that they inherit the fieldName attribute from the enclosing <field> element. FieldValidators defined within a <field-validator> element will have their fieldName automatically filled with the value of the parent <field> element's fieldName attribute. The reason for this structure is to conveniently group the validators for a particular field under one element, otherwise the fieldName attribute would have to be repeated, over and over, for each individual <validator>.
故结论:<field-validator>需和外围的<field>结合使用,并在外围<field>的name属性上指定field的值;他实现的效果和使用“<validator>嵌套<param name="fieldName">”的方式实现的Field-Validator是一模一样的!使用<field-validator>是为了对单个输入域的验证可以放在一起,方便书写查看归类而已。
在<field>中不可以使用Non-Field Validator。
1 <validator>
2 <field-validator>
Keep the following in mind when using either syntax:
The <validator> element allows you to declare both types of validators (either a plain Validator a field-specific FieldValidator).
如:
下面是一个Non-Field Validator:
<validator type="expression> <param name="expression">foo gt bar</param> <message>foo must be great than bar.</message> </validator>
下面是一个Field-Validator:
<validator type="required"> <param name="fieldName">bar</param> <message>You must enter a value for bar.</message> </validator>
The <field-validator> elements are basically the same as the <validator> elements except that they inherit the fieldName attribute from the enclosing <field> element. FieldValidators defined within a <field-validator> element will have their fieldName automatically filled with the value of the parent <field> element's fieldName attribute. The reason for this structure is to conveniently group the validators for a particular field under one element, otherwise the fieldName attribute would have to be repeated, over and over, for each individual <validator>.
故结论:<field-validator>需和外围的<field>结合使用,并在外围<field>的name属性上指定field的值;他实现的效果和使用“<validator>嵌套<param name="fieldName">”的方式实现的Field-Validator是一模一样的!使用<field-validator>是为了对单个输入域的验证可以放在一起,方便书写查看归类而已。
在<field>中不可以使用Non-Field Validator。
引用
验证器的执行先后:
Non Field Validators优先Field Validators,
Non Field Validators排在前面的先执行
Field Validators排在后面的先执行(我注:这句话是错误的,应该也是排在前面的先执行。详见:http://struts.apache.org/2.x/docs/validation.html#Validation-ShortCircuitingValidator)
短路原则:
Non Field Validators最优先执行,如果某个字段效验失败,则改字段下的所有效验不会获得执行机会,不会影响其他字段的执行,Field Validators一样操作。
Non Field Validators不会影响Field Validators的执行。
Non Field Validators优先Field Validators,
Non Field Validators排在前面的先执行
Field Validators排在后面的先执行(我注:这句话是错误的,应该也是排在前面的先执行。详见:http://struts.apache.org/2.x/docs/validation.html#Validation-ShortCircuitingValidator)
短路原则:
Non Field Validators最优先执行,如果某个字段效验失败,则改字段下的所有效验不会获得执行机会,不会影响其他字段的执行,Field Validators一样操作。
Non Field Validators不会影响Field Validators的执行。
expression效验器 求出ognl表达式的值。为true通过验证
关于validation配置文件的命名:
两种方式:
引用
<actionClass>-validation.xml
<actionClass>-<actionAlias>-validation.xml
actionAlias指什么?指的就是action配置中<action>标签上name属性的名字。
<actionClass>-<actionAlias>-validation.xml
比如有如下action配置:
<package name="upc.user" extends="mes-default" namespace="/upc/user"> <action name="index" class="userAction" method="execute"> <result>userIndex.jsp</result> </action> <action name="save" class="userAction" method="save"> <result>/common/operationSuccess.jsp</result> <result name="input">userEdit.jsp</result> </action> </package>则其中的index和save就是actionAlias。
针对上例:
若validation配置文件名为UserAction-validation.xml,则UserAction的所有方法(这里有两个,execute方法和save方法)在执行前都会通过该校验文件做校验;
若validation配置文件名为UserAction-save-validation.xml,则只有UserAction的save方法在执行前会通过该校验文件做校验。
validation type required和requiredstring 的区别:
required validator
http://struts.apache.org/2.0.14/docs/required-validator.html
requiredstring validator:
http://struts.apache.org/2.0.14/docs/requiredstring-validator.html
编程式验证:
http://taink.iteye.com/blog/565690(or:http://51jsp.cn/a/struts/20100108/5545.html)
引用
struts2 对action中的方法校验流程:
* 1.类型转换器对请求参数执行类型转换,并将转换后的值赋给action 中的属性
* 2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError 拦截器将异常信息添加到fieldErrors里,不管类型转换是否出现异常,都会进入第3步.
* 3.系统通过反射技术先调用action 中的validateXxxx()方法,Xxxx为方法名.
* 4.再调用action中的validate()方法.
* 5.经过上面4步,如果系统中的fieldErrors存在错误信息,
* (即存放错误的集合的size 大于0,系统自动将请求转发至名称为input 的视图.如果fieldErrors 没有任何的错误信息,系统将执行action 中处理方法)
* 1.类型转换器对请求参数执行类型转换,并将转换后的值赋给action 中的属性
* 2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError 拦截器将异常信息添加到fieldErrors里,不管类型转换是否出现异常,都会进入第3步.
* 3.系统通过反射技术先调用action 中的validateXxxx()方法,Xxxx为方法名.
* 4.再调用action中的validate()方法.
* 5.经过上面4步,如果系统中的fieldErrors存在错误信息,
* (即存放错误的集合的size 大于0,系统自动将请求转发至名称为input 的视图.如果fieldErrors 没有任何的错误信息,系统将执行action 中处理方法)
http://ttitfly.iteye.com/blog/150304
引用
struts2标签写的form表单
1. 只有FieldError级别错误才会自动显示出来,不再需要使用类似这样的标签:<s:fielderror/>
2. 验证出错的话,如果跳到form表单页面,那么会自动保留上次填入的表单信息
3. FieldError级别错误信息都会在每个Filed的上面显示
4. ActionError级别的错误会整体显示在一起,并且需要使用标签:<s:actionerror/>
5. 类型转换错误是属于FieldError级别的
6. ActionError是都放在List里的,而FieldError是放在Map里的
7. validateExecute invoke...
validate invoke..
或者
testValidate invoke...
validate invoke...
可以知道validate方法始终会被执行。
1. 只有FieldError级别错误才会自动显示出来,不再需要使用类似这样的标签:<s:fielderror/>
2. 验证出错的话,如果跳到form表单页面,那么会自动保留上次填入的表单信息
3. FieldError级别错误信息都会在每个Filed的上面显示
4. ActionError级别的错误会整体显示在一起,并且需要使用标签:<s:actionerror/>
5. 类型转换错误是属于FieldError级别的
6. ActionError是都放在List里的,而FieldError是放在Map里的
7. validateExecute invoke...
validate invoke..
或者
testValidate invoke...
validate invoke...
可以知道validate方法始终会被执行。
Q:如果同时使用了编程式和声明式验证验证了同一东西,会先执行哪个?
A:经验证,会先执行编程式验证。例子如下:
引用
i18n文件actionClass.properties:
编程式save()方法验证:
声明式save action(method配的就是save()方法)验证文件actionClass-save-validation.xml:
最终输出结果:
validation.requiredstring.steelgradeId=钢种ID为必填项
编程式save()方法验证:
public void validateSave() { .... if(entity.getSteelgradeId()==null || "".equals(entity.getSteelgradeId()) { this.addActionError("steelgradeId 非空!"); } }
声明式save action(method配的就是save()方法)验证文件actionClass-save-validation.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd" > <validators> <!-- the Non Field Validator is execute before than Field Validator.--> <validator type="requiredstring"> <param name="fieldName">steelgradeId</param> <param name="trim">true</param> <message>${getText("validation.requiredstring.steelgradeId")}</message> </validator> </validators>
最终输出结果:
关于struts2验证框架出现的“Invalid field value for field "xxxField"”:
引用
在xwork-2.0.4.jar\com\opensymphony\xwork2\xwork-messages.properties中定义的该验证信息;若未在struts.xml中指定struts.custom.i18n.resources,也未在actionName.properties中指定invalid.fieldvalue.xxxField=出错信息,则在出现类型转换错误的时候会使用xwork-messages.properties中的i18n出错配置,出现“Invalid field value for field "xxxField"”
http://wing123.iteye.com/blog/415211
http://www.java3z.com/cwbwebhome/article/article2/21084.html
Interceptor:
http://www.blogjava.net/max/archive/2006/12/06/85925.html
为什么struts2控制台不打印出错信息:
http://guangyao-yao.iteye.com/blog/812279
struts2配合log4j打印异常栈信息:
http://tdcq.iteye.com/blog/706459
Struts2 i18n:
http://wuaner.iteye.com/blog/643987
发表评论
-
Lucene & Solr
2013-05-07 17:30 2425Params of solr query (参见 solrj ... -
Continuous Integration Server:Jenkins & Hudson
2013-04-15 16:15 1467Jenkins: http://jenkins-ci.org/ ... -
Spring Integration
2013-03-26 16:52 3045Spring Integration Reference ... -
高可用与负载均衡:Haproxy(or lVS) + keepalived
2013-01-29 20:35 3188sources: Setting Up A High ... -
Spring Batch: 大数据量批量并行处理框架
2013-01-11 16:19 4843Spring Batch Documentati ... -
AOP: Aspect Oriented Programming
2013-01-06 11:13 2791The AspectJ Programming Gu ... -
Performance & Load test tool : JMeter
2012-12-18 14:28 1293Official: http://jmeter.apa ... -
rabbitmq & spring amqp
2012-12-04 00:09 8715My main AMQP post on blogger ... -
javaMail 邮件
2012-11-23 20:14 3497SMTP POP3的区别到底是什么? http://w ... -
未完 Spring MVC
2012-11-15 22:41 2127Annotations for Http pa ... -
JUnit 单元测试
2012-10-30 12:27 2571测试的分类: http://s ... -
Hibernate
2011-08-02 11:48 1187Hibernate缓存: 一级缓存的生命周期和session的 ... -
Maven Repository Management & Nexus
2011-07-30 11:39 1436Why do I need a Repositor ... -
XStream
2011-07-13 00:18 1382XStream 内置 Converters: http://x ... -
Hibernate注解: 联合主键:@IdClass vs @EmbeddedId
2011-07-12 21:01 15385Hibernate Annotations -> 2.2 ... -
Struts2 Tag 标签
2011-05-04 00:43 1641struts2 OGNL 中的#、%等符号的区别: Apach ... -
Spring
2011-04-07 19:10 2899Spring API & Reference: htt ... -
iBATIS cacheModel 缓存
2011-04-07 14:29 1355http://ibatis.apache.org/docs/d ... -
Template Engine: FreeMarker & Velocity
2011-01-16 22:56 4113FreeMarker http://freemar ... -
Struts2 标签 <s:url>中添加多个<s:param>的奇怪问题 待整理
2011-01-14 13:27 1918问题描述(我的回复): http://went3456.ite ...
相关推荐
Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...
struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...
包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...