struts2官方教程学习总结——拦截器

拦截器的工作流程:

 

下面的就是当一个请求到struts2的时候,框架所做的事情:

 框架首先寻找去调用哪一个Action class去处理request,并且会通过action配置去寻找要执行的过滤器。

 现在过框架会生成一个ActionInvocation的实例并且会去执行invoke()方法。此时此刻,框架会将控制权转交给ActionInvocation以进行将来的处理。

 ActionInvocation会将action和interceptors进行封装,并且知道拦截器将以怎样的次序被调用。

 ActionInvocation会调用拦截器栈中的第一个拦截器的interceptor方法,下面就是LoggingInterceptor’s的interceptor()方法,它包含有以下的内容:

public String intercept(ActionInvocation invocation) throws Exception

{

//Pre processing

logMessage(invocation, START_MESSAGE);

String result = invocation.invoke();

//Post processing

logMessage(invocation, FINISH_MESSAGE);

return result;

}

 正如所代码所展示的,当logMessage()方法被调用后,ActionInvocation会调用下一个拦截器的interceptor()方法,就这样循环重复着,直到栈中最后一个拦截器被调用。

 当所有的拦截器都被调用之后,就会去调用action类中的指定的处理函数(默认为execute()方法),执行完后会返回一个结果对应的视图信息。

 但是如果任何一个验证器检验出有错误发生,在这种情况下,请求就会被终止。以后的过滤器都不会被调用,并且action也不会被执行。同时控制流就会发生改变:到现在为止,已经执行的过滤器就会以相反的顺序传递处理结果,然后返回给用户。

 现在我们考虑一下当执行完action后的操作,同样看LoggingMessage中的intercept方法,当执行完invoke方法后,就会继续执行下面的一个logMessage(invocation, FINISH_MESSAGE);然后将结果返回给前一个执行的过滤器,依次循环,所有的过滤器都完成,然后将结果返回给用户。

 

通过框架的过滤器机制,我们可以进行如下的操作和好处:

1、 更加灵活的操作用户的请求

2、 可以专心的处理用户的请求(即专注于Action中的处理请求函数,及其后台操作)

3、 加强了核心代码的可读性以及可重用性

4、 更加方便的进行项目测试

5、 我们可以只增加自己需要的过滤器到过滤器栈中去处理用户的请求


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wlzjdm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值