自己实现Struts2(五)实现StrutsPrepareAndExecuteFilter

本文详细介绍了如何自己实现Struts2的StrutsPrepareAndExecuteFilter,包括分析其在Struts2框架中的作用,以及逐步实现过滤器的主要功能:拦截请求、解析Action、调用ActionInvocation以及处理返回结果。文章还提到了简化实现的策略,将ActionMapper和ActionProxy的部分功能融入到StrutsPrepareAndExecuteFilter中。
摘要由CSDN通过智能技术生成

上一章自己实现Struts2(四)实现ActionInvocation我已经实现好了action和拦截器的调用者ActionInvocation类,现在就来实现一下Struts2的入口——StrutsPrepareAndExecuteFilter类。

#分析StrutsPrepareAndExecuteFilter

再把Struts2框架流程图贴上来

大家将FilterDispatcher看成StrutsPrepareAndExecuteFilter好了,它已经被替代的了,我实在是找不到有StrutsPrepareAndExecuteFilter的图呀.。在第一章自己实现Struts2(一)Struts流程介绍和环境搭建我把Struts2框架执行流程简单地介绍了一下,现在我再介绍一下(当然是复制粘贴过来的了)

  1. 客户端提交一个请求,被StrutsPrepareAndExecuteFilter拦截到了(StrutsPrepareAndExecuteFilter配置的拦截路径一般都是/*)。

  2. 在StrutsPrepareAndExecuteFilter拦截到请求后会访问ActionMapper来分析请求信息以决定是否调用某个action(因为有可能请求的是其它的静态资源或者不符合规定后缀的)。

  3. 如果要访问action,那么StrutsPrepareAndExecuteFilter会把请求的处理交给ActionProxy对象。

  4. ActionProxy对象会通过ConfigurationManager加载核心配置文件struts.xml(Struts的action的配置信息文件)。

  5. ActionProxy读取到要访问的action的配置信息后创建一个ActionInvocation对象,ActionInvocation实现了命令模式,在action调用的前后递归地调用涉及到的拦截器(Interceptor)。

  6. 一旦action执行完毕,会返回一个result,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

可以看到跟StrutsPrepareAndExecuteFilter有关的步骤是1、2、3,那我要做的StrutsPrepareAndExecuteFilter不仅要实现步骤1的功能,还把步骤2中ActionMapper要做的事情实现(当然了ActionMapper在Struts2中只是个接口),还有实现步骤4和5中ActionProxy要做的事情,所以我的Struts2是没有ActionMapper和ActionProxy的了,糅合在StrutsPrepareAndExecuteFilter中了。当然这是为了简单,我实现的功能并不多,将来也不会去扩展。

StrutsPrepareAndExecuteFilter还要实现一步就是根据6中ActionInvocation中返回的结果串如SUCCES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值