Struts2 执行流程(简化版)

一、简介 

    为什么说是Struts2的简化版, 因为这是在不了解Struts2的源码前提下提出的, 如果你有基础, 那么你可以根据源码分析执行流程,在这个过程中我们来看看Struts2 执行流程。

    ps:这篇文章非常的没有意思。

二、Struts2执行流程

   Struts2执行流程也叫生命周期,可以分为服务器启动前和处理请求二个过程.

 服务器启动:

 1. 加载项目web.xml

 2. 创建Struts核心过滤器StrutsPrepareAndExecuteFilter 对象, 执行filter à  init() (注释:此时不会执行业务先关的方法)

 struts-default.xml,    核心功能的初始化

 struts-plugin.xml,     struts相关插件

 struts.xml    用户编写的配置文件

 访问-处理请求:

 3. 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, 创建Action代理对象(维护一个Action引用)

 4. 执行默认拦截器栈中定义的18个拦截器

 5. 执行action的业务处理方法

 三 、核心初始化文件

 struts-default.xml, 详解

   目录:struts2-core-2.3.4.1.jar/ struts-default.xml

 内容:

1. bean节点指定struts在运行的时候创建的对象类型比如一些Struts2的一些内部对象: Action代理对象等

2.指定struts-default包  【用户写的package(struts.xml)一样要继承此包 】

 package  struts-default  包中定义了: 

             a.  跳转的结果类型 

                   dispatcher    转发,不指定默认为转发

                   redirect       重定向

                   redirectAction  重定向到action资源

                   stream        (文件下载的时候用)

             b. 定义了所有的拦截器

                  定义了32个拦截器!  为了拦截器引用方便,可以通过定义栈的方式引用拦截器,   此时如果引用了栈,栈中的拦截器都会被引用!

                   defaultStack

                   默认的栈,其中定义默认要执行的18个拦截器!

            c. 默认执行的拦截器栈、默认执行的action

                 <default-interceptor-ref name="defaultStack"/>

                <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

   如果您希望从源码角度理解Struts2的执行流程,推荐一篇文章 https://blog.csdn.net/laner0515/article/details/27692673

原文地址:https://www.cnblogs.com/achievement-active/p/9354348.html