Struts2工作原理

来源:互联网 发布:pp助手苹果mac 编辑:程序博客网 时间:2024/06/06 18:49

Struts2工作原理

看一下Struts2官方给出的体系结构图
Struts2体系结构图
解释
+ 客户端发出一个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,然后再通过过滤器链返回给客户端进行呈现。
0 0