zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    vue-element 时间选择器datepicker 第二次展示change无效,数据刷新页面不刷新
    uniapp
    mysql
    python
    pycharm
    从maven的debug compile到java的编译时注解(与springboot项目整合)
    关于H5+实现APP检查自动更新与 调用 plus.runtime.install 弹出不了安装界面问题
    Linux常用命令
    mybatis中sql语句必须用${}而不能不用#{}的情况
    Mybatis映射文件中的参数传递
  • 原文地址:https://www.cnblogs.com/achievement-active/p/9354348.html
Copyright © 2011-2022 走看看