`

【转】FilterDispatcher原理以及使用

阅读更多
FilterDispatcher原理
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
    <param-name>actionPackages</param-name>
    <param-value>com.foo.bar,com.baz.quux</param-value>
</init-param>
</filter>
其实也没什么特殊的,就是给我们的Controller加了一个参数actionPackages,从字面上理解,Controller将会从com.foo.bar和com.baz.quux这两个包中去寻找action,具体的流程是这样的:

1.系统首先通过web.xml文件装载FilterDispatcher类,它要有actionPackages参数

2.FilterDispatcher会初始化一个Dispatcher,并传递actionPackages的值

3.Dispatcher会初始化一个ClasspathConfigurationProvider对象,用它来存放一个或多个Configuration Providers

4.Dispatcher给ConfigurationManager对象增加一个ClasspathConfigurationProvider来处理actionPackages参数

5.Someone会调用ClasspathConfigurationProvider的loadpackages方法

6.Loadpackages会首先利用ResolverUtil从所列package(就是actionPackages参数的值)中找到所有实现了Action接口和名字带有Action后缀的类,然后这些类会集中放入一个Set集合中,然后这个Set中的每个类都会被传递给processActionClass方法

7.processActionClass首先确定命名空间,然后捕捉任何ParentPackage和Results类型的Annotation,接着创建一个ActionConfig,设置action name,package name以及results。

步骤7获取action名字的规则是这样的:将action name从任何“Action”后缀前面截取掉,如果action name含有“/”的话,那么将最后一个“/”后面的第一个字母变为小写。还是举例来进行说明吧:

如果我们的actionPackages参数是com.myapp.actions,我们的Action类是com.myapp.actions.member.EditAction,那么我们可以通过下面的url来访问这个类:http://server/myapp/member/edit.action .也就是子包(subpackage)将成为namespace,而action类名将成为action name。如果类名有一个“Action”后缀,那么它将被去掉。

至此我们就实现我们的“0配置”了,^_^,Annotation在其中还是扮演着非常重要的作用的,除了我们前面已提到的Result Annotation这个Action Annotations外,还有Interceptor Annotations、Validation Annotations和Type Conversion Annotations,因为项目中基本上没有用到这个新特性,我也就没有深入的看这些Annotations的详细使用方法了。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iww0616/archive/2008/02/17/2100302.aspx

分享到:
评论

相关推荐

    org.apache.struts2.dispatcher.FilterDispatcher

    2. **FilterDispatcher的工作原理**: - 当一个HTTP请求到达服务器时,`FilterDispatcher`首先被调用。 - 它会检查请求URL,看是否与Struts 2的映射规则匹配。如果匹配,FilterDispatcher将接管请求处理。 - 接...

    struts2重要知识点原理

    总结起来,Struts2框架通过FilterDispatcher作为核心控制器拦截和处理用户请求,使用Action和Interceptor实现业务逻辑和控制流,通过配置文件(struts.xml)管理Action的映射和结果,同时依赖ObjectFactory创建和管理...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    请求到达时,由FilterDispatcher(或后来的StrutsPrepareAndExecuteFilter)拦截,然后通过OGNL(Object-Graph Navigation Language)表达式解析请求参数。ActionInvocation负责调用Action,执行完业务逻辑后,...

    SSH运行原理,包括详细描述和图

    - **工作原理**:FilterDispatcher作为一个Filter运行在Web应用中,负责拦截所有用户请求。当用户发起一个以".action"结尾的请求时,FilterDispatcher会将该请求交给Struts2框架处理。 - **处理流程**: - 用户发起...

    Struts2基本原理

    - FilterDispatcher依据struts.xml找到匹配的Action和方法,并使用IoC将请求参数注入Action。 - Action执行业务逻辑,可能包括表单验证。 - Action执行完毕后,依据配置找到对应的返回结果Result,可以是JSP、...

    Struts1与Struts2原理 区别详解汇总

    1. **核心控制器**:Struts1使用ActionServlet,而Struts2使用FilterDispatcher。 2. **Action对象**:Struts1中的Action直接与Servlet API耦合,而Struts2中的Action通过拦截器与业务逻辑分离。 3. **配置方式*...

    ssh三大框架的工作原理

    SSH框架是指Struts2、Spring以及Hibernate这三种技术组合而成的轻量级Java Web开发框架。下面将分别介绍这三种框架的基本工作原理。 #### Hibernate工作原理 Hibernate是一种对象关系映射(ORM)工具,用于简化...

    Struts2的工作原理和流程

    3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过...

    三大框架的原理

    3) FilterDispatcher被调用,查找对应的Action。 4) Action执行,处理业务逻辑。 5) Action返回Result,Result负责显示视图。 2. **Spring** - **核心原理**:Spring的核心是IoC(Inversion of Control,控制...

    三大框架工作原理总结

    #### 一、Hibernate工作原理及使用原因 ##### Hibernate是什么? Hibernate是一种对象关系映射(Object Relational Mapping, ORM)工具,它为Java应用程序提供了简化数据库交互的方式。通过将Java对象与数据库表...

    struts2工作原理

    总结起来,Struts2的工作原理是通过FilterDispatcher拦截请求,使用Action Mapping找到相应的Action,然后通过拦截器链执行Action,最终根据Action的返回结果展示视图。这种架构使得开发者可以将业务逻辑、控制逻辑...

    struts2入门实例和工作(流程)原理

    本文将深入探讨Struts2的入门实例、工作原理及其主要组件。 首先,让我们从一个简单的Struts2入门实例开始。创建一个基本的Struts2应用通常包括以下几个步骤: 1. 引入Struts2的依赖库到项目中,这通常通过Maven或...

    struts2工作原理图

    4. **Preparation Phase**:在找到Action Mapping后,Struts2会进行预处理,包括填充Action实例的属性(如果请求参数与Action属性匹配),以及执行拦截器(Interceptor)。拦截器是Struts2的一个强大特性,允许在...

    Struts2配置说明-里面含有工作原理图

    FilterDispatcher的工作原理如下:当一个HTTP请求到达时,它会通过FilterDispatcher过滤器进行处理。FilterDispatcher会依据ActionMapper的规则来解析请求URL,决定哪个Action应该被执行以及调用哪个具体的方法。...

    Struts2 工作原理 Struts2框架 有图

    ActionProxy创建ActionInvocation实例,用于封装Action的执行上下文,包括Action实例本身以及与其相关的拦截器链。 #### 6. 执行Action及拦截器 ActionInvocation实例采用命名模式调用Action,同时触发拦截器链的...

    三大框架原理.

    Spring的IoC容器通过XML配置文件或者注解的方式定义了各种bean以及它们之间的依赖关系。当需要获取某个bean时,可以通过`ApplicationContext`或者`BeanFactory`接口提供的方法获取。 - **XML配置文件**:这是Spring...

    Struts2执行原理

    总的来说,Struts2的执行原理是通过过滤器链、ActionMapper、ActionProxy、ActionInvocation以及拦截器等组件协作,实现了从接收到HTTP请求到生成响应的全过程,提供了一套灵活且可扩展的MVC框架。

    专题资料(2021-2022年)struts2核心工作流程与原理.doc

    在Struts2框架中,这些过滤器包括`ActionContextCleanUp`、可能存在的第三方过滤器(如`SiteMesh`用于页面布局)以及最关键的`FilterDispatcher`。过滤器按照定义的顺序执行,`ActionContextCleanUp`通常用于清理或...

    struts2的基本实现原理

    总结起来,Struts2的基本实现原理主要包括:FilterDispatcher拦截请求、Action Mapping解析请求、Action类处理业务逻辑、Interceptor增强功能、Value Stack和OGNL处理数据交互。"mymvc"压缩包可能包含了这些元素的...

    SSH 咯框架的原理

    本文将详细解析Struts1和Struts2框架的工作原理以及它们的优缺点。 首先,我们来看看Struts1的工作原理。Struts1是一个基于Model-View-Controller(MVC)设计模式的框架。当用户发起请求时,ActionServlet作为框架...

Global site tag (gtag.js) - Google Analytics