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