struts2工作原理

看一下Struts2官方给出的体系结构图

Struts2体系结构.png

解释

  • 客户端发出一个HttpServletRequest请求(action或jsp)。
  • 请求经过一系列的过滤器链(过滤器链包括可选的 ActionContextCleanUp 过滤器,用于系统整合技术,如 SiteMesh 插件)。
  • FilterDispather是struts2的核心控制器,此过滤器须在web.xml中进行配置,通常为过滤器链中的最后一个过滤器。
<!-- 配置struts2的核心过滤器 -->
<filter>
    <!-- 过滤器名称 -->
    <filter-name>struts2</filter-name>
    <!-- 过滤器类 -->
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 过滤器映射 -->
<filter-mapping>
    <filter-name>struts2</filter-name>
    <!-- /*表示所有的请求都需要经过这个过滤器过滤 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>
  • 通过FilterDispatcher查找ActionMapper,以确定这个请求是否需要调用某个 Action。
  • 如果ActionMapper确定需要调用某个Action,FilterDispatcher 将控制权交给ActionProxy。
  • ActionProxy依照框架的配置文件(struts.xml),找到需要调用的Action类
  • ActionProxy会创建一个ActionInvocation的实例。
  • ActionInvocation会先调用相关的拦截器(Action 调用之前),最后调用 Action。
  • Action调用返回结果Result,根据之前的配置文件(struts.xml),查找响应的转发路径(此路径可以是一个jsp文件或者FreeMarker的模版技术的网页呈现,也可以是一个Action类等)。
  • 按照相反的方向调用相关的拦截器链(Action调用之后),返回一个HttpServletResponse,然后再通过过滤器链返回给客户端进行呈现。

Struts2工作原理

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22