博客
关于我
struts2的详细执行流程
阅读量:801 次
发布时间:2019-03-25

本文共 1615 字,大约阅读时间需要 5 分钟。

Struts2运行流程详解

在上一篇中,我们已经对Struts2的基本原理进行了简要介绍。本文将详细讲解Struts2的运行流程,并通过一个简单的案例来说明。

案例基础内容

在使用Struts2进行开发之前,需要先进行以下配置:

  • web.xml文件中添加Struts2的过滤器配置
  • 编写Action类(本例使用HelloWorldAction作为示例)
  • struts.xml中配置相应的Action
  • 编写用户界面
  • 接下来,我们将从Struts2的内部运行流程入手,详细剖析其工作原理。

    Struts2的内部运行流程

    当用户提交请求时,请求的URL为:/helloworld/helloworldAction.action。请求会被Tomcat服务器接收到,随后服务器会根据请求的URL路径选择对应的Web应用进行处理。本例中,请求的路径为/helloworld,因此由helloworld这个Web工程来处理。

    步骤说明如下:

  • 请求处理初始化

    Web服务器读取helloworld工程的web.xml文件。在web.xml中配置了扩展名为.action的请求处理规则,其中指定了struts2过滤器来处理此类请求。根据过滤器配置,找到了FilterDispatcher这个类。

  • FilterDispatcher的初始化

    Web容器初始化好了FilterDispatcher类的实例,并通过调用doFilter()方法接收到请求。这是整个Struts2应用中的调度中心,相当于前进到Struts2架构图的第一步。

  • 请求转发到ActionMapper

    FilterDispatcher告诉ActionMapper处理当前的请求。ActionMapper的主要职责是判断请求是否需要Struts2进行处理。这里不会涉及页面控制器,而是专注于动态路由管理。

  • 创建ActionProxy对象

    ActionProxy的职责是代理Action的运行过程。它接收来自FilterDispatcher的请求URL,并向ConfigurationManager询问需要运行哪一个Action。需要注意的是,服务器启动时会将struts.xml文件中的配置一次性读入内存,并缓存起来,以便快速匹配URL和对应的Action。

  • 创建ActionInvocation对象并执行

    ActionProxy知道了需要运行的Action及其相关拦截器,还有所有可能使用的结果信息。它会创建一个ActionInvocation对象来描述Action运行的整个过程。这里的关键在于,拦截器和结果自由地结合在一起,保证整个流程的正确性。

  • 拦截器的执行顺序

    ActionInvocation对象执行过程分为两部分:拦截器(Interceptor)的执行和Action的实际执行。拦截器的应用顺序是前后一致的,确保结果后置拦截器的顺序不会被破坏。

  • Action的执行与结果处理

    在拦截器应用完毕后,调用Action的execute()方法。Action在执行过程中,会直接使用其属性值,不需要从用户的请求域中获取参数。这部分的工作由拦截器完成,其职责是将用户请求中的参数转化为Action属性值。

  • 结果的处理与页面展示

    Action执行完成后,根据返回的result值,在struts.xml中找到对应的页面。页面通常是一个模板页面,采用Struts2自带的标签库来展示需要的数据,生成最终响应内容。

  • 拦截器的后置处理

    最后,拦截器的后置方法按照引用顺序倒序执行。这一环节完成后,整个ActionInvocation流程结束,然后将生成的响应通过定义的过滤器链输出,最终向用户展示结果。

  • 通过以上步骤,我们就清晰地了解了Struts2从接收请求到处理并最终生成响应的完整流程。这个流程不仅仅是关于Action的执行,还涉及到前后拦截器的处理、结果的自由性配置等多个方面。

    转载地址:http://wyuyk.baihongyu.com/

    你可能感兴趣的文章
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
    查看>>
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
    查看>>
    NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
    查看>>
    NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
    查看>>
    NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
    查看>>