Struts2工作原理详解

Struts2的工作原理图如下所示:

Struts2工作原理详解:

1、Struts2框架会将得到的用户请求封装成为一个HttpServletRequest请求对象。

2、这个请求会经过一系列的过滤器,如果Struts2与其他的框架进行了集成,首先会经过ActionContextCleanUp过滤器,然后再经过其他的一些过滤器,最后经过核心过滤器FilterDispatcher或StrutsPreparedAndExecuteFilter。

       ActionContextCleanUp过滤器它的作用主要是延长action属性的生命周期,以便在jsp页面访问,当所有过滤器加载完毕后,核心过滤器会清除所有的ActionContext,如果其他的过滤器要使用这些属性时,就得不到想要得到的值。所以让action的属性会统一的交给ActionContextCleanUp过滤器来清除。

       FilterDispatcher或StrutsPreparedAndExecuteFilter都是核心过滤器,在2.1.3版本之前使用的是FilterDispatcher,在2.1.3及2.1.3之后使用的都是StrutsPreparedAndExecuteFilter。FilterDispatcher过滤器当我们要自定义过滤器时,我们自定义的过滤器必须要放在struts过滤器之前,放在struts过滤器之后,自定义的过滤器可能会不起作用。

       StrutsPrepareAndExecuteFilter可以把它拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.

3、经过核心过滤器后,核心过滤器ActiobMapper中询问是否需要调用action,ActiobMapper通过反射技术查看是否需要调用action,如果有action,核心过滤器会将请求转发给ActionProxy。

4、ActionProxy会通过ConfigurationManager配置管理器查找struts.xml文件中要调用的Action类。

5、ActionProxy创建一个ActionInvocation实例,该实例使用命名模式来调用。

6、 ActionInvocation依次调用interceptor和action,在Action执行的前后,ActionInvocation实例根据配置文件加载与Action相关的所有拦截器Interceptor。默认的struts拦截器有18个,struts2中很多功能都是通过这些拦截器实现,如:异常处理,文件上传请求参数赋值,数据校验等这些功能实现都在拦截器中。

7、一旦Action执行完毕,ActionInvocation实例根据struts.xml文件中的配置找到相应的返回结果。Template将返回结果进行渲染,Template通常是一个JSP或者FreeMarker的模板。

8、再反向的经过上面的过滤器。

9、将结果形成一个HttpServletResponse对象返还给用户。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值