- 浏览: 84865 次
- 性别:
- 来自: 福建福州
文章分类
最新评论
-
walkingp:
非常好的一篇文章,再能配上插图就更好了!
asp.net架构基础知识--httpmodule&HttpHandler -
sharp_lover:
struts的校验确实是比较费劲,jquery很强但是也有一些 ...
struts2实践- 结合jquery的纯客户端js表单校验 -
daquan198163:
commons-validator支持客户端、服务端双重验证, ...
struts2实践- 结合jquery的纯客户端js表单校验 -
chinaway:
按照楼主的配置,终于搞定。3q
struts2实践- 结合jquery的纯客户端js表单校验 -
yyjn12:
不论如何,客户端的js校验,可以完全取代服务器端的数据检验吗? ...
struts2实践- 结合jquery的纯客户端js表单校验
1.最初也是最终的理想Zero Configuration
目前主要的原理就是通过java5提供的annotation机制把xml配置移动到实际的代码中,但是我认为这样做的好处有
便于测试,由于不存在xml文件,不需要再为了测试环境编写一分不同的xml配置文件,所有的配置已经都再代码里面了。
目前struts该功能还在测试中,主要是需要通过再web.xml中添加需要扫描的类目录,以及几个和xml文件中的element对应的annotation来实现。
2.Annotation
主要是和zero configuration配合使用。
包含了Action(namespace,parentpackeage,result,resutls)
Interceptor(After,Before,BeforeResult)
Validator,Type Conversion Annotations.
再xml文件中都能找到对应的映射。
3.Configuration Elements
Administrative Elements
Bean Configuration
定义某个接口的实现类,然后只要需要再框架内部实现用@Inject标记即可实现该接口对象的注入。
使用static实现把某些特定值注入到某个类的特定方法中,所以如果该属性为true的时候type必须为空。
Constant Configuration
代替struts.properties中的定义修改系统运行时参数。
可以配置的途径除了struts.xml,struts.properties外还有web.xml
Package Configuration
struts,pagckage是配置的最外层元素,我们可以再Package中定义action,interceports等元素,
其中包可以继承,可以abstract(可以不包含实际action).
Namespace Configuration
顾名思义该配置主要是为了解决action名字的冲突(例如可能系统很多模块都有menu或者help)action。
默认的namespace是""空串,意味着如果再其他的namespace没有找到对应的action就回直接回到该namespace寻找action,
Root Namespace
("/") 该namespace只匹配对应的context根目录的请求,如果其他namespace的action没有找到回直接回到default namespace不会回到该namespace寻找。
Include Configuration
该元素的主要目的就是模块化,把大的配置文件分割为小的配置文件,便于模块化开发。
Interceptor Configuration
Interceptor标记是mixed and matched即interceptor-ref既可以ref到interceptor也可以ref到interceptor stack。
应用还可以定义默认的interceptor
Action Configuration
struts2的核心工作单元,配置某个http请求如何处理。
主要定义的方面如下
action的名称-->页面上请求的url中的.action前面的字符一致。
例如http://myoldman/index/Welcome.action将会对应于系统中
Package namespace 为"index" name为Welcome的action。
利用struts2的form标签可以根据页面上制定的action属性,自动生成对应带后缀的action请求。
如果action带有/则必须在struts.xml文件中加入
action的对应的处理类
对应的exception handler
对应的interceptors
ation method
如果action没有定义method属性,默认的action方法将会是execute()(in the interface Action)
action不是必须实现该接口,struts2会根据类反射的方式找到对应的执行方法,
不过如果没有execute方法并且未定义action的method属性,struts2会抛出异常。
Wildcard Method(通配符方法)
通配符号可以作为前缀或后缀
通配符可以扩张到validation,typeconvesion,message file等。
如果一个action元素没有配置任何class,struts2会默认使用ActionSupport作为实现类。
该类实现了一些基本的跳转和方法,例如execute和input等
如果需要自己覆盖默认的class可以利用default-class-ref in package元素来定义。
link to action
尽量使用action跳转到特定的jsp页面而不是直接跳转到某个jsp页面,这样做的好处就是所有的jsp页面都当作view通过action管理,实现mvc2模式。
Default action
可以未package配置一个默认的action,如果struts在应用中找不到任何的action的话,就会去找默认的action,不过如果需要未整个应用定义该效果的话需要在default package上定义一个default-action-ref这样只要未实现的action都会跳转到action执行。
或者也可以使用wildcard default把如下代码放到default package中所有action的最后。
<action name="*">
<result>/{1}.jsp</result>
</action>
然后往还未实现的jsp页面上加入stub page。
两种reload struts.xml配置文件的方法,
struts.configuration.xml.reload=true
Wildcard Mappings(通配符映射)
如果有两个通配符匹配的话,系统默认选择最后一个匹配。
* Matches zero or more characters excluding the slash ('/') character.
** Matches zero or more characters including the slash ('/') character.
\character The backslash character is used as an escape sequence.
其中{N}n从1-9,并且{0}匹配整个url。
Result Configuration
系统预定一的result
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
默认resulttype为dispatcher并且默认对应success。
全局result
该定义和package同级别,主要目的是为了所有的包能共享result,例如login失败的跳转等。
Dynamic Results
result的location属性可以通过OGNL从action对象上获取
如上配置可以通过action中的如小方法获取。
Exception Configuration(异常配置)
struts2的异常处理通过interceptor实现。如果需要加入的异常处理的话需要加入exception的interceptor。
<global-exception-mappings>
<exception-mapping>
配置需要捕获的exception和对应需要跳转到的result。
页面上可通过如下的属性输出exception的内容。
exception The exception object itself
exceptionStack The value from the stack trace
4.Configuration Files(配置文件)
web.xml 定义struts2框架所必须的FilterDispatcher
struts.xml Main configuration, contains result/view types, action mappings, interceptors, and so forth
struts.properties yes Framework properties可以在struts.xml中通过constance元素替换。
struts-default.xml struts2 jar中自带无需关注。
struts-default.vm yes Default macros referenced by velocity.properties
struts-plugin.xml yes At the root of a plugin JAR Optional configuration files for Plugins in the same format as struts.xml.
velocity.properties yes /WEB-INF/classes/ Override the default Velocity configuration
Static Content
struts把一些css和js文件放在了包的static和tempalte目录中。
Performance tuning
关闭logging和devMode
删除不需要要的interceptor
定义正确地http头比如cache expire等
把struts2包中的static信息拷贝到webroot中。
Create a freemarker.properties file in your WEB-INF/classes directory
并且设置template_update_delay=60000
struts默认会间隔500ms检查template是否需要reload。
启用Freemarker template caching
struts.freemarker.templatesCache = true;
Do not create sessions unless you need them.
如果使用freemarker作为view请直接使用freemark的语法。不要使用OGNL
目前主要的原理就是通过java5提供的annotation机制把xml配置移动到实际的代码中,但是我认为这样做的好处有
便于测试,由于不存在xml文件,不需要再为了测试环境编写一分不同的xml配置文件,所有的配置已经都再代码里面了。
目前struts该功能还在测试中,主要是需要通过再web.xml中添加需要扫描的类目录,以及几个和xml文件中的element对应的annotation来实现。
2.Annotation
主要是和zero configuration配合使用。
包含了Action(namespace,parentpackeage,result,resutls)
Interceptor(After,Before,BeforeResult)
Validator,Type Conversion Annotations.
再xml文件中都能找到对应的映射。
3.Configuration Elements
Administrative Elements
Bean Configuration
定义某个接口的实现类,然后只要需要再框架内部实现用@Inject标记即可实现该接口对象的注入。
使用static实现把某些特定值注入到某个类的特定方法中,所以如果该属性为true的时候type必须为空。
Constant Configuration
代替struts.properties中的定义修改系统运行时参数。
可以配置的途径除了struts.xml,struts.properties外还有web.xml
<filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> </filter>
Package Configuration
struts,pagckage是配置的最外层元素,我们可以再Package中定义action,interceports等元素,
其中包可以继承,可以abstract(可以不包含实际action).
Namespace Configuration
顾名思义该配置主要是为了解决action名字的冲突(例如可能系统很多模块都有menu或者help)action。
默认的namespace是""空串,意味着如果再其他的namespace没有找到对应的action就回直接回到该namespace寻找action,
Root Namespace
("/") 该namespace只匹配对应的context根目录的请求,如果其他namespace的action没有找到回直接回到default namespace不会回到该namespace寻找。
Include Configuration
该元素的主要目的就是模块化,把大的配置文件分割为小的配置文件,便于模块化开发。
Interceptor Configuration
Interceptor标记是mixed and matched即interceptor-ref既可以ref到interceptor也可以ref到interceptor stack。
应用还可以定义默认的interceptor
<default-interceptor-ref name="secureStack"/>
Action Configuration
struts2的核心工作单元,配置某个http请求如何处理。
主要定义的方面如下
action的名称-->页面上请求的url中的.action前面的字符一致。
例如http://myoldman/index/Welcome.action将会对应于系统中
Package namespace 为"index" name为Welcome的action。
利用struts2的form标签可以根据页面上制定的action属性,自动生成对应带后缀的action请求。
如果action带有/则必须在struts.xml文件中加入
<constant name="struts.enable.SlashesInActionNames" value="true"/>.
action的对应的处理类
对应的exception handler
对应的interceptors
ation method
如果action没有定义method属性,默认的action方法将会是execute()(in the interface Action)
action不是必须实现该接口,struts2会根据类反射的方式找到对应的执行方法,
不过如果没有execute方法并且未定义action的method属性,struts2会抛出异常。
Wildcard Method(通配符方法)
通配符号可以作为前缀或后缀
<action name="*Crud" class="example.Crud" method="{1}">
<action name="Crud_*" class="example.Crud" method="{1}">
通配符可以扩张到validation,typeconvesion,message file等。
如果一个action元素没有配置任何class,struts2会默认使用ActionSupport作为实现类。
该类实现了一些基本的跳转和方法,例如execute和input等
如果需要自己覆盖默认的class可以利用default-class-ref in package元素来定义。
link to action
尽量使用action跳转到特定的jsp页面而不是直接跳转到某个jsp页面,这样做的好处就是所有的jsp页面都当作view通过action管理,实现mvc2模式。
Default action
可以未package配置一个默认的action,如果struts在应用中找不到任何的action的话,就会去找默认的action,不过如果需要未整个应用定义该效果的话需要在default package上定义一个default-action-ref这样只要未实现的action都会跳转到action执行。
或者也可以使用wildcard default把如下代码放到default package中所有action的最后。
<action name="*">
<result>/{1}.jsp</result>
</action>
然后往还未实现的jsp页面上加入stub page。
两种reload struts.xml配置文件的方法,
struts.configuration.xml.reload=true
String execute() { com.opensymphony.xwork.config.ConfigurationManager.destroyConfiguration(); return SUCCESS; }
Wildcard Mappings(通配符映射)
如果有两个通配符匹配的话,系统默认选择最后一个匹配。
* Matches zero or more characters excluding the slash ('/') character.
** Matches zero or more characters including the slash ('/') character.
\character The backslash character is used as an escape sequence.
其中{N}n从1-9,并且{0}匹配整个url。
Result Configuration
系统预定一的result
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
默认resulttype为dispatcher并且默认对应success。
全局result
该定义和package同级别,主要目的是为了所有的包能共享result,例如login失败的跳转等。
Dynamic Results
result的location属性可以通过OGNL从action对象上获取
<action name="fragment" class="FragmentAction"> <result name="next" type="redirectAction">${nextAction}</result> </action>
如上配置可以通过action中的如小方法获取。
private String nextAction; public String getNextAction() { return nextAction; }
Exception Configuration(异常配置)
struts2的异常处理通过interceptor实现。如果需要加入的异常处理的话需要加入exception的interceptor。
<global-exception-mappings>
<exception-mapping>
配置需要捕获的exception和对应需要跳转到的result。
页面上可通过如下的属性输出exception的内容。
exception The exception object itself
exceptionStack The value from the stack trace
4.Configuration Files(配置文件)
web.xml 定义struts2框架所必须的FilterDispatcher
struts.xml Main configuration, contains result/view types, action mappings, interceptors, and so forth
struts.properties yes Framework properties可以在struts.xml中通过constance元素替换。
struts-default.xml struts2 jar中自带无需关注。
struts-default.vm yes Default macros referenced by velocity.properties
struts-plugin.xml yes At the root of a plugin JAR Optional configuration files for Plugins in the same format as struts.xml.
velocity.properties yes /WEB-INF/classes/ Override the default Velocity configuration
Static Content
struts把一些css和js文件放在了包的static和tempalte目录中。
Performance tuning
关闭logging和devMode
删除不需要要的interceptor
定义正确地http头比如cache expire等
把struts2包中的static信息拷贝到webroot中。
Create a freemarker.properties file in your WEB-INF/classes directory
并且设置template_update_delay=60000
struts默认会间隔500ms检查template是否需要reload。
启用Freemarker template caching
struts.freemarker.templatesCache = true;
Do not create sessions unless you need them.
如果使用freemarker作为view请直接使用freemark的语法。不要使用OGNL
发表评论
-
struts2实践-文件上传以及图片文件width,length的检查(未完成版)
2008-04-15 14:48 0先定个题目等完成了再发布. -
Struts2 Architects Guide-Big Picture
2008-03-27 16:53 1354简要处理流程 HttpRequest-->ActionC ... -
Struts2 Core Developers Guide-Cookbook
2008-03-27 16:12 18771.Handling File Uploads 采用 ... -
Struts2 Core Developers Guide-FAQ
2008-03-27 11:13 16671.What are the fundamental diff ... -
Struts2 Core Developers Guide-Type Conversion
2008-03-25 16:50 20261.Overview 类型转化在strut ... -
Struts2 Core Developers Guide-Localization
2008-03-25 16:48 21931.Overview 支持国际化的 ... -
Struts2 Core Developers Guide-Validation
2008-03-25 16:20 35721.Using Annotations(利用java5的标记实 ... -
Struts2 Core Developers Guide-PreResultListener
2008-03-25 10:12 23321.主要功能&触发时间 该监听器主要在action的e ... -
Struts2 Core Developers Guide-DispatcherListener
2008-03-25 10:01 13971.主要功能 在Dispatcher对象init或者destr ... -
Struts2 Core Developers Guide-Result Types
2008-03-24 22:14 14801.总览 action负责applicate ... -
Struts2 Core Developers Guide-Action Chaining
2008-03-24 22:07 11371.顾名思义,该功能的主要目的是执行一连串的action方法, ... -
Struts Core Developers Guide-Writing Interceptors
2008-03-24 17:33 9081.实现Interceptor interface接口 该接口 ... -
Struts Core Developers Guide-Framework Interceptor
2008-03-24 16:50 1507Alias Interceptor 用于在A ... -
Struts2 Core Developers-Interceptors
2008-03-21 15:42 8581.Understanding Interceptors(理解 ... -
Struts2 Core Developers Guide-Develop with struts
2008-03-21 10:45 10071.Ajax集成 struts2集成了对Ajax处理的支持,只 ... -
Struts2 Core Developers Guide-Nutshell(概要)
2008-03-21 10:22 917Architecture in a Nutshell(架构概要 ... -
Struts2 Core Developers Guide-tutorial
2008-03-20 10:17 10191.Dependency of struts2 struts2 ...
相关推荐
标题《qgroundcontrol-developers-guide-en》表明本篇指南是关于qgroundcontrol(简称QGC)的开发者使用说明,QGC是地面站控制软件,其主要功能是为PX4飞控系统进行配置。 描述中提到,这份开发者指南解释了QGC软件...
《ARM System Developers Guide - Designing and Optimizing System Software》是一本深入探讨ARM处理器系统软件设计与优化的专业书籍,由Andrew N. Sloss、Dominic Symes、Chris Wright和John Rayfield四位在ARM...
《Oracle Database 应用开发者指南:基础篇 10g Release 2(10.2)》是一份详尽的文档,旨在为那些希望利用Oracle数据库进行应用开发的专业人士提供全面的技术指导。此文档由Oracle公司发布,版本号为B14251-01,...
SIP2开发者指南 3M Standard Interchange Protocol V2.00 3M™ SelfCheck™ system SIP2 Interface Developer’s Guide
这个是ERSI官方文档,绝对权威,绝对经典。AO开发必读。
2. **脚本语言与编程**:ACT主要基于Python语言进行开发,因此熟悉Python语法是必要的。指南会介绍如何使用Python编写ACT脚本,实现对Workbench模型的操作和定制化功能。 3. **ACT组件开发**:学习如何创建自定义的...
Developers guide to ASP.NET
这个是ERSI官方文档,绝对权威,绝对经典。AO开发必读。
本指南将围绕“VxWorks Device Driver Developers Guide Vol”展开,深入解析驱动编程的核心概念和技术。 首先,VxWorks设备驱动的开发主要涉及三个卷: 1. **Vol1_6.6**: 这部分通常涵盖驱动程序的基础知识,包括...
标题:“Apache_CloudStack-4.3.0-Developers_Guide-en-US” 指明了文件的名称,这是一个针对开发者指南的文档,专为Apache CloudStack 4.3.0版本编写。 描述:“Apache_CloudStack-4.3.0-Developers_Guide-en-US....
Tosi -- Matplotlib for Python Developers -- 2009 -- code.7z
Nandi -- Spark for Python Developers -- 2015 -- code.7z
2-day-developers-guide.pdf
1. 文档标题为“json-developers-guide.pdf”,并特别指出是“oracle 19c json开发指南”。这说明文档是针对Oracle数据库19c版本下使用JSON数据格式进行开发的官方指南。Oracle 19c是一个企业级数据库版本,其对JSON...
该压缩包包含的文件“win95-a-developers-guide”很可能是本书的电子版,可能包括PDF文档、源代码示例或其他相关资源。 Windows 95是微软发布的一款具有里程碑意义的操作系统,它引入了全新的图形用户界面和多任务...
名称:daily.dev Where developers gro ---------------------------------------- 版本:3.28.2 作者:https://daily.dev/ 分类:开发者工具 ---------------------------------------- 概述:获取为您量身定制的最...
Struts、Spring和Hibernate是Java Web开发中的三大框架,它们的整合使用,通常被称为SSH(Struts2、Spring4、Hibernate5)框架集成。SSH整合能够实现MVC设计模式,提供松耦合、高可扩展性的应用解决方案。下面将详细...
MediaTek LinkIt Smart 7688 Developers Guide v_0.92-1 是一份针对MediaTek LinkIt Smart 7688开发平台的技术指南,适用于那些希望深入了解该平台并进行开发的工程师或爱好者。这份文档是英文版,为那些喜欢阅读...
OpenWF Display Configuration是一个用于显示配置的API接口,它能够让开发者在集成新的显示设备时,根据设备的规格说明通过相应的配置API(Wfdcfg库)来配置并提供显示参数。该开发者指南主要是针对在QNX软件开发...
·增加的多核处理器支持,包括Intel@ Core i7处理器、ARM MPCore and Cortex A9处理器、FreescaleQorIQ P2020处理器、Cavium 54xx/55xx/56xx/57xx/58xx系列处理器和RMI XLR/XLS系列处理器等,使客户能够根据他们...