美文网首页
struts2核心工作流程与原理 学习笔记

struts2核心工作流程与原理 学习笔记

作者: 小帅哥_来玩儿呀 | 来源:发表于2017-05-05 16:11 被阅读0次

    Struts2官方文档

    Struts2整体结构:

    Struts2的入口在web.xml中,通过Filter进入。

    通过filter的 url-patten设置拦截的请求类型:

    “/*”表示拦截所有请求,可以拦截自定义请求类型,如:/*.action,/*.do等等

    工作原理:

    一个请求在Struts2中的大概处理分为以下几个步骤:

    1.客户端发起请求

    2.请求被Struts2的filter拦截,然后提交到一系列的过滤器,最后到FilterDispatcher

    3.FilterDispatcher为Struts2控制器的核心控制器,主要通过其doFilter()方法处理,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,然后把请求交给ActionProxy来处理。

    4.ActionProxy通过Configuration Manager也就是struts.xml来找到需要调用的action类

    5.ActionProxy创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor(struts2核心级东西)。

    6.拦截器(Interceptor)是aop的一种实现,在struts2中拦截器的调用类似栈,先进后出,一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果(result)。

    ActionInvocation 是Xworks 中Action 调度的核心。而对Interceptor 的调度,也正是由ActionInvocation负责。ActionInvocation 是一个接口, 而DefaultActionInvocation 则是Webwork 对ActionInvocation的默认实现。

    Interceptor 的调度流程大致如下:

    1. ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。

    2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。

    Interceptor将很多功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为具有很好的重用性。XWork、WebWork的许多功能都是有Interceptor实现,可以在配置文件中组装Action用到的Interceptor,它会按照你指定的顺序,在Action执行前后运行。

    工作流程

    1、客户端浏览器发出HTTP请求.

    2、根据web.xml配置,该请求被FilterDispatcher接收

    3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton

    4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

    5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面

    6、返回HTTP响应到客户端浏览器

    那啥...看源码的就等下次吧....

    相关文章

      网友评论

          本文标题:struts2核心工作流程与原理 学习笔记

          本文链接:https://www.haomeiwen.com/subject/xzpjtxtx.html