- 浏览: 886423 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
Struts2架构图
请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
Struts2部分类介绍
这部分从Struts2参考文档中翻译就可以了。
ActionMapper
ActionMapper其实是HttpServletRequest和Action调用请求的一个映射,它屏蔽了Action对于Request等java Servlet类的依赖。Struts2中它的默认实现类是DefaultActionMapper,ActionMapper很大的用处可以根据自己的需要来设计url格式,它自己也有Restful的实现,具体可以参考文档的docs\actionmapper.html。
ActionProxy&ActionInvocation
Action的一个代理,由ActionProxyFactory创建,它本身不包括Action实例,默认实现DefaultActionProxy是由ActionInvocation持有Action实例。ActionProxy作用是如何取得Action,无论是本地还是远程。而ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的。
ConfigurationProvider&Configuration
ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤其实现类XmlConfigurationProvider及其子类StrutsXmlConfigurationProvider来解析,
Struts2请求流程
1、客户端发送请求
2、请求先通过ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
5、ActionProxy根据ActionMapping和ConfigurationManager找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。添加PreResultListener可以在Interceptor中实现,不知道其它还有什么方式?
转自:http://secyaher.blog.163.com/blog/static/38955772009610113458949/
http://hi.baidu.com/fox6575/blog/item/a392b818976ae6deac6e755e.html
发表评论
-
ognl表达式
2011-07-07 00:36 1293OGNL是Object Graphic Navigation ... -
在Struts 2_0中实现表单数据校验
2011-07-07 00:02 1137转换与校验(Conversion & Validati ... -
简单的struts2输入校验框架
2011-05-13 23:43 10841.输入页面login.jsp: <%@ page ... -
struts2在学习(十二)--表单验证的两种方式
2011-05-13 23:13 957第四个示例:注解方式校验器---用户注册页面user2_reg ... -
struts2在学习(十一)--表单验证的两种方式
2011-05-13 23:09 902第二个示例:XML配置式校验器---登录和注册页面user_l ... -
struts2在学习(十)--表单验证的两种方式
2011-05-13 22:56 11561. Struts2中的输入校验2. 编码方式校验 1) A ... -
struts2采用convention-plugin实现零配置
2011-05-13 21:58 1111最近开始关注struts2的新特性,从这个版本开始,Strut ... -
基于SSH2框架Struts2拦截器的登录验证实现
2011-04-01 22:00 2288通过之前的Struts2.1.6+Spring2.5.6+H ... -
通过ActionContext类访问Servlet对象
2011-04-01 21:40 1914ActionContext类位于com.opensympho ... -
webwork 之销毁session
2011-04-01 17:35 1761销毁的意思?不是清空 ... -
Struts2 Convention Plugin(三)
2011-03-18 01:26 1196Annotation 参考Convention使用某些注解语句 ... -
Struts2 Convention Plugin(二)
2011-03-18 01:25 1147Results and result codesStruts ... -
Struts2 Convention Plugin(一)
2011-03-18 01:25 1094Introduction从struts2.1版本开始,Conv ... -
struts2页面中的标签调用类的方法
2011-03-15 16:33 1613<s:set name="str" ... -
Apache Struts 2.2.1 GA版发布
2011-03-14 17:14 1334昨日,Apache软件基金会发布了Struts 2.2.1 G ... -
spring2 +hibernate 3 + struts 配置
2011-03-14 15:15 12081. web.xml 1. <?xml versi ... -
Struts2 中action之间的跳转
2011-03-14 12:32 1250转载于http://zhou568xiao.iteye.com ... -
Struts2 的Result Type
2011-03-13 16:35 1041http://www.blogjava.net/duanzhi ... -
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
2011-03-13 16:32 1619dispatcher 为默认跳转类型,用于返回一个视图资源(如 ... -
struts2防止重复提交
2011-03-10 23:07 1289struts2的防止重复提交 也使用到了 token (令牌机 ...
相关推荐
XWork则是Struts2的基础,它处理请求、调度Action、执行业务逻辑,并与用户界面进行交互。 1. **Action和ActionContext**: - Action是Struts2中的业务逻辑组件,负责处理用户请求。每个Action类都对应一个特定的...
学习`struts2-json-plugin`的源码可以帮助开发者了解Struts2如何处理JSON数据,如何进行自定义扩展,以及如何优化JSON相关的性能。同时,对于理解MVC框架的工作流程和JSON在网络应用中的应用也有很大帮助。深入研究...
1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2.interceptor`包下,你可以找到各种预定义的拦截器类。 2. **...
Struts2是一个基于MVC(Model-View-...总之,`struts2-core-2.3.7`源码的分析将带你走进Struts2框架的深处,帮助你成为一名更熟练的Java Web开发者,理解Web应用的复杂性,以及如何优雅地处理用户请求和业务逻辑。
- 拦截器是Struts2的一大特色,它们允许在Action执行前后插入自定义的处理逻辑,例如日志记录、权限检查等。 - `.struts.xml`配置文件在这里起着关键作用,它定义了Action的映射、拦截器栈和其他框架设置。 - ...
总结来说,这个“Struts框架入门学习---工程源码”提供了实践Struts框架的基础,涵盖了Action、MVC模式、配置文件、拦截器和视图等方面,对于初学者来说是一份宝贵的资料。通过分析和运行这个工程,你可以更好地理解...
总的来说,Struts 2.3.15.3 源码的学习可以帮助开发者深入理解MVC框架的设计与实现,以及如何在实际项目中有效地运用Struts 2。通过阅读源码,你可以探索其内部工作原理,提高问题排查能力,并了解如何优化和定制...
总的来说,这三章的源码学习是每个想要精通Struts2的开发者不容错过的。它们涵盖了从基础到进阶的关键知识,能够帮助你从理论到实践全面掌握Struts2框架。在阅读源码的过程中,结合手册内容,不断实践和调试,你将能...
通过研究这些源代码,开发者不仅可以深入理解Struts2的工作机制,还能学习到如何设计和实现一个成熟的MVC框架。此外,对于那些想要对框架进行定制或者修复问题的人来说,阅读源码是非常有价值的。在实际项目中,了解...
本文将深入探讨Struts Action的配置和使用,以及如何通过源码学习来提升对Struts的理解。 首先,Action配置主要在Struts配置文件(struts-config.xml)中进行。这个文件定义了应用程序的行为,包括Action的映射、...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
本资料包包含的是《Struts2深入详解》一书的源码分析,涵盖了从第一章到第五章的内容,并附带了相关的jar包,方便读者结合理论与实践进行学习。 首先,让我们从第一章开始,Struts2的基础知识。这一章通常会介绍...
本资源提供了STRUTS 2完全学习手册的源码,覆盖了第1至第14章的内容,是深入理解并实践Struts 2框架的重要资料。 1. **第一章:介绍与环境搭建** - Struts 2框架的基本概念和历史背景 - 安装和配置Struts 2框架所...
本资源包含了Struts2完全学习手册的第15至18章的源码,这四章主要涵盖以下几个核心知识点: 1. **Action与Result** (第15章) - **Action**: Struts2的核心组件,它代表了用户请求处理的业务逻辑。Action类是自定义...
通过分析这个源码包,开发者可以学习如何配置Struts 1框架以支持文件上传,了解ActionForm的使用,以及如何处理上传后的文件。此外,还能理解Apache Commons FileUpload库的工作原理,这对任何想要深入理解Struts 1...
总的来说,Struts2作为一个成熟的MVC框架,为Java Web开发提供了强大且灵活的工具,而这份"struts2学习 源码"资料则是初学者深入理解和实践Struts2的宝贵资源。通过实际操作和研究这些源代码,不仅可以学习到基本的...
总的来说,这篇“Struts2源码解读”的博文应该是对Struts2核心机制进行了详细的解析,包括Action、Interceptor、Result等关键组件的工作原理,以及整个请求处理流程。通过学习这些内容,开发者可以深化对Struts2的...
- 一个典型的Struts2请求处理包括:解析请求、查找Action、调用Action、执行拦截器、处理结果等步骤。理解这个生命周期有助于调试和优化应用性能。 8. **插件和扩展性**: - Struts2拥有丰富的插件系统,可以轻松...
这个版本的源码可以帮助我们了解Struts2如何随着技术的发展而进化,例如如何适配新的JVM特性和API,以及在处理请求、响应、视图渲染等核心流程中的改进策略。 其次,Struts2.3.34是一个较旧但广泛使用的版本,它的...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。XWork是Struts2的核心库,为Struts2提供许多底层功能,如动作调度、类型转换和异常处理等。这次我们探讨...