你是否正在寻找关于filterdispatcher的内容?让我把最完整的东西奉献给你:

9.4 Struts 2的核心机制
Struts 2的处理流程已经和Struts 1大相径庭了,但是和WebWork比较相似,这都是因为Struts 2和WebWork合并的缘故,并吸取了WebWork大部分设计思想。下面讲解Struts 2的核心流程,以及其他一些处理机制。
9.4.1 filterdispatcher处理流程
在Struts 2中,最重要的一个类是org.apache.struts2.dispatcher.FilterDispatcher,从前面的示例可以看出,用户通过浏览器提交一个(HttpServletRequest)请求后,请求被在web.xml中定义的过滤器FilterDispatcher拦截,在FilterDispatcher中主要经过大概3层过滤器的处理,分别是ActionContext CleanUp、其他过滤器(Othter Filters、SiteMesh等)、filterdispatcher。
在FilterDispatcher过滤器中首先询问ActionMapper是否需要调用某个Action来处理请求,如果ActionMapper决定需要调用某个Action,filterdispatcher则把请求的处理交给ActionProxy,ActionProxy通过配置文件struts.xml找到需要调用的Action类,然后ActionProxy创建一个ActionInvocation实例并调用该Action,但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor,等Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。
在详细介绍filterdispatcher之前,先讲解一下Servlet中过滤器的概念,以使读者对此有一个深入的认识。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过一个配置文件来声明并动态地处理。实现一个过滤器需要3个步骤:首先编写过滤器实现类的程序,然后把该过滤器添加到web.xml 中声明,最后把过滤器与应用程序一起打包并部署。
过滤器 API 一共包含 3 个简单的接口:Filter、FilterChain 和 FilterConfig。过滤器类必须实现 Filter 接口:
init():这个方法在容器实例化过滤器时被调用,它主要设计用于使过滤器为处理做准备。容器为这个方法传递一个FilterConfig,其中包含有配置信息。
doFilter():与Servlet拥有一个service()方法来处理请求一样,过滤器拥有单个用于处理请求和响应的方法doFilter()。这个方法接收3个输入参数: ServletRequest、ServletResponse和FilterChain。FilterChain对于正确的过滤操作至关重要,doFilter()方法必须调用FilterChain的doFilter()方法,除非该方法用来拦截以后的下游处理。
destroy():该方法由容器在销毁过滤器实例之前调用,以便能够执行任何必需的清理代码。
过滤器通过 web.xml 文件中的两个XML标签来声明,。<filter>标签定义过滤器的名称,并且声明实现类和init()参数。<filter-mapping>标签将过滤器与Servlet或URL模式相关联。<filter>标签负责把一个过滤器名和一个特定的类关联起来,这种关联是通过<filter-name>和<filter-class>元素指定的。<filter>必须有一个
以上就是关于filterdispatcher的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-8987-1.html
找你商量点事呗
因此
我词穷了T_T
我赞成我们不和任何国家搞对抗而广泛合作的外交政策