struts2工作流程



1.客户端发出一个HttpServletRequest请求,这个请求经过一系列的过滤器Filter(如ActionContextCleanUp等),这些过滤器最终会调用FilterDispatcher类(现在是StrutsPrepareExcuteFilter)的serviceAction方法,FilterDispatcher是控制器的核心,就是MVC的struts2实现中控制层的核心

2.FilterDispatcher有时询问ActIonMapper(访问静态文件时)是否需要调用某个Action来处理这个HttpServletRequest请求,如果ActionMapper决定需要调用某个Action,则FilterDispatcher会创建一个ActionPoxy,并调用其execute方法

3.ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类

4.ActionProxy类中拥有一个ActionInvocation实例,调用其invoke方法,在调用invoke方法之前,会根据配置加载Action相关的所有拦截器Interceptor,调用invoke方法过程是顺序调用所有的拦截器的intercept方法,最后调用Action类中的方法(其中,拦截器的intercept方法中又会调用ActionInvacation的invoke方法)

5.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果result

6.最后通过HttpServletResponse返回客户端一个响应

需要注意的是:

1、调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

2、Struts 2的核心控制器是FilterDispatcher,有3个重要的方法:destroy()doFilter()Init(),可以在Struts 2的下载文件夹中找到源代码,执行顺序是:init()---->doFilter()-------->destroy()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值