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. matlab 离散点差值,散点图的插值方法
  2. [转载]Oracle 游标使用全解
  3. python实现可以被with上下文管理的类或函数
  4. Linux利用子命令m,Linux mdir命令
  5. http请求curl
  6. Using JSON for data transfer
  7. dbeaver导出表结构和数据_mall数据库表结构概览
  8. C#函数式编程之序列
  9. 通过 Python 装饰器实现DRY(不重复代码)原
  10. PostgreSQL监控指标
  11. Pandas标签统计
  12. 盐城机电高等职业技术学校计算机专业,盐城机电高等职业技术学校
  13. matlab获取图片上的字,Matlab读取图片代码
  14. 计算机科学与技术专业前沿技术相关论文,计算机科学与技术专业创新能力的培养途径论文...
  15. echarts水球图-动态波纹百分比数据显示
  16. Qt引入图标字体包iconfont
  17. 学历焦虑正在摧毁新一代测试工程师!学历不够如何破局?
  18. 软件工程——四则运算3(C#)
  19. Linux 下后台运行程序,查看和关闭后台运行程序(转载)
  20. HTML代码via浏览器logo,Via浏览器怎么定制首页 几步轻松完成

热门文章

  1. 直播邀请函 | 第12届亚洲知识产权营商论坛:共建创新价值 开拓崭新领域
  2. 关于游戏开发的一些思想碰撞
  3. memcpy的效率问题
  4. mysql 转为小写_mysql将字符串转成小写的方法
  5. 【多线程整理 4】notify与notifyAll
  6. 【论文泛读88】复杂背景下红外小目标检测技术研究
  7. surfaceview.getHolder().addCallback(Callback callback) 添加回调后未回调surfaceCreated()
  8. Android一行代码实现网络加载GIF闪图(附源码)
  9. 苹果手机ios系统通过数据线连接电脑进行抓包,不在同一局域网下的解决方案
  10. 学习《操作系统真相还原》三