STRUTS2核心控制器:FilterDispatcher

  • 博客分类:
  • struts2

STRUTS2核心控制器:FilterDispatcher

原文:http://mopishv0.blog.163.com/blog/static/54455932200981295843192/

1.    在 struts1.x 系列中 , 所有的请求是通过一个 servlet(ActionServlet) 来管理控制的 , 在 Struts2.X 而是经过一个Filter 来处理请求的。 Struts 2 将核心控制器设计成 Filter ,而不是一个普通 Servlet 。 因为设计者为了实现AOP(面向方面 编程)概念.

struts1.x 中

<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
。。。 
< /servlet>

Struts2.X 中

<filter>
<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern> </filter-mapping>

2. Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

核心控制器:FilterDispatcher 
FilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当 用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理。

Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。 
Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和 class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。 
Struts 2用于处理用户请求的Act ion实例,并不是用户实现的业务控制器,而是Act ion代理 ——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将 HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。 
显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。图3.19显示了这种处理模型。
Struts 2的拦截器和Action从图 3.19中可以看出,用户实现的Action类仅仅是Struts 2的Action代理的代理目标。用户实现的业务控制器(Action)则包含了对用 户请求的处理。用户的请求数据包含在HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest 对象。拦截器负责将HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例。

FilterDispatcher相关推荐

  1. org.apache.struts2.dispatcher.FilterDispatcher的四个功能

    org.apache.struts2.dispatcher.FilterDispatcher的四个功能 2008-05-24 11:16 1.org.apache.struts2.dispatcher ...

  2. FilterDispatcher is deprecated! Please use

    2019独角兽企业重金招聘Python工程师标准>>> 在struts2.3.7下,web.xml中使用 会出现 ********************************** ...

  3. FilterDispatcher is deprecated!

    http://www.cnblogs.com/babybluevino/archive/2012/11/29/2794732.html >>> FilterDispatcher &l ...

  4. struts2 核心控制器:FilterDispatcher (写的真心清晰)

    原文:http://mopishv0.blog.163.com/blog/static/54455932200981295843192/ 1.    在 struts1.x 系列中 , 所有的请求是通 ...

  5. STRUTS2核心控制器 FilterDispatcher

    原文:http://mopishv0.blog.163.com/blog/static/54455932200981295843192/ 1.    在struts1.x 系列中,所有的请求是通过一个 ...

  6. Struts2中的FilterDispatcher和StrutsPrepareAndExecuteFilter的区别

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/8172956 在Struts2开发中,很多人问到,声明过滤器的时候,为什么有的时候用& ...

  7. StrutsPrepareAndExecuteFilter与FilterDispatcher的区别

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter org.apache.struts2.dispatcher. ...

  8. FilterDispatcher已被标注为过时解决办法 gt;gt;gt; FilterDispatcher lt;lt;lt; is deprecated!...

    一些struts2的教程都是比较早的,当我们基于较新版本的struts2来实现代码的时候,往往会出现一些问题.比如这个警告:FilterDispatcher isdeprecated! 在web.xm ...

  9. Struts2 FilterDispatcher核心控制器

    1.    在 struts1.x 系列中 , 所有的请求是通过一个 servlet(ActionServlet) 来管理控制的 , 在 Struts2.X 而是经过一个Filter 来处理请求的.  ...

最新文章

  1. gnome硬盘分析_三款基于GUI和终端的实用Linux磁盘扫描工具
  2. Python基础最常用且重要的模块总结----建议收藏
  3. window.open() document.open()
  4. makefile 文件模板
  5. C++ 协程与网络编程
  6. AutoCAD如何输入文字
  7. html中颜色的编号,html中各种颜色的编号.doc
  8. java的网络编程有用吗_十大有用但又偏执的Java编程技术
  9. 【Python爬虫】爬虫程序的简单处理过程
  10. wpf+.net 4.5 surface2.0 = 异步多点触控 时间轴 part7
  11. 2021-06-06 下拉框,列表框..
  12. 数字孪生智慧园区能源管理系统
  13. 数字人轻松学习Blender系列之八:建模-1
  14. 使用JavaScript打开Chrome的设置页面
  15. 微型计算机是嵌入式吗,什么是嵌入式计算机
  16. 3ds Max 实验十 熟悉材质编辑器
  17. 【极简spark教程】RDD编程
  18. java自行车内走线,【骑行课堂】内走线不是噩梦:“一秒“装好内走线神器
  19. Java核心技术卷一 -第九章:集合
  20. 嵌入式:浅析FinFET技术的发展前景

热门文章

  1. java基础复习之关键字break与continue异同比较
  2. $emit自定义子组件和父组件通信
  3. Ubuntu系统安装中文输入法教程
  4. 深入 char * ,char ** ,char a[ ] ,char *a[] 内核
  5. 缓冲区溢出之strcpy和memcpy
  6. 【ARM裸板】Nand Flash基础与时序分析
  7. 开篇: 外贸电商ERP
  8. 单片机原理及应用c51周国运_实用!百万工程师都在使用的单片机开发产品流程...
  9. 孙鑫C++第五堂课要点
  10. 新手必读:笔记本电脑日常维护的经验技巧