struts2执行流程

Struts2框架实战项目:深入理解与应用 本文还有配套的精品资源,点击获取 简介:Struts2是用于构建企业级Java Web应用程序的流行框架,提供了MVC设计模式的实现。本教程通过"struts2例子程序"帮助开发者掌握Struts2的核心概念、配置和使用方法。项目中包含了Struts2的基本结构、配置文件、Action类、结果配置、JSP页面、拦截器等关键组件。通过学习和实践"struts2demo",开发... 阅读详情

当Web容器收到 请求(HttpServletRequest)

1、它将请求传递给一个标准的的过滤链包括 (ActionContextCleanUp)过滤器

2、然后经过Other filters(SiteMesh ,etc),

3、接下来需要调用FilterDispatcher核心控制器,

4、然后它调用ActionMapper确定请求那个Action,

ActionMapper返回一个收集Action详细信息的ActionMaping对象。

5、接下来FilterDispatcher将控制权委派给ActionProxy,

6、ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),

7、然后创建ActionInvocation对象

8、ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N)

9、一旦执行结果返回结果字符串,ActionInvocation负责查找结果字符串对应的(Result)

10、然后执行这个Result ,Result会调用一些模版(JSP)来呈现页面

11、之后拦截器(Interceptor N)会在被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和(核心控制器)(FilterDispatcher)。


拦截器:

拦截器能在action被调用之前和被调用之后执行一些”代码“。Struts2框架的大部分核心功能都是通过拦截器来实现的,如纺织重复提交、类型转换、对象封装、校验、文件上传、页面预装载等等,都是在拦截器的帮助下实现的。每一个拦截器都是独立装载的,我们可以根据实际的需要为每一个action配置它所需要的拦截器。

2. Struts2部分类介绍 

这部分从Struts2参考文档中翻译就可以了。 

ActionMapper 

        ActionMapper其实是HttpServletRequest和Action调用请求的一个映射,它屏蔽了Action对于Request等 java Servlet类的依赖。Struts2中它的默认实现类是DefaultActionMapper,ActionMapper很大的用处可以根据自己的需要来设计url格式,它自己也有Restful的实现,具体可以参考文档的docs\actionmapper.html。 

ActionProxy&ActionInvocation 

        ActionProxy是Action的一个代理,由ActionProxyFactory创建,它本身不包括Action实例,默认实现类是DefaultActionProxy是由ActionInvocation持有Action实例。ActionProxy作用是如何取得Action,无论是本地还是远程。而 ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的。 

ConfigurationProvider&Configuration 

        ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤其实现类 XmlConfigurationProvider及其子类StrutsXmlConfigurationProvider来解析。 

Tomcat启动时,struts做了哪些工作:

struts2的入口就是一个StrutsPrepareAndExecuteFilter 过滤器(web.xml中配置),当容器如tomcat启动的时候就会调用的该filter的初始化方法

一个请求在Struts2框架中的处理大概分为以下几个步骤: 
1.客户端发起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。 
2.请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意这里是有顺序的,先ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到 FilterDispatcher。 
3.FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。下面粗略的分析下我理解的FilterDispatcher工作流程和原理:FilterDispatcher进行初始化并启用核心doFilter 

4.FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。 
5.ActionProxy通过ActionMapping和Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类. 
如上文的struts.xml配置

6.ActionProxy 创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action。但在调用之前 ActionInvocation会根据配置加载Action相关的所有Interceptor。(Interceptor是struts2另一个核心级的概念) 

Interceptor 的调度流程大致如下: 
1. ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。 
2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。 

Interceptor将很多功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为具有很好的重用性。XWork、 WebWork的许多功能都是有Interceptor实现,可以在配置文件中组装Action用到的Interceptor,它会按照你指定的顺序,在 Action执行前后运行。 
那么什么是拦截器。 
拦截器就是AOP(Aspect-Oriented Programming)的一种实现。(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。) 

7.一旦 Action 执行完毕, ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果。当然,如果要在返回之前做些什么,可以实现 PreResultListener 。添加 PreResultListener 可以在 Interceptor 中实现。
Struts2.0框架组件详解与应用 本文还有配套的精品资源,点击获取 简介:Struts2.0是一个基于MVC模式的开源Java框架,用于构建企业级Web应用程序。它简化了开发流程,增强了代码的可维护性,并提供了一系列核心功能,包括动作映射、结果类型、拦截器、插件支持、OGNL表达式语言、主题和皮肤、表单验证、国际化以及RESTful支持。虽然Struts2.0已经较为老旧,但它仍是Java Web开发的重要... 阅读详情

相关推荐

Struts2基础应用实践:一个入门级案例

本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC模式的Java Web应用框架,通过Action和Result实现业务逻辑和表现层的分离。本文通过一个简单的例子,指导如何配置Struts2应用,包括添加依赖、创建配置文件 struts.xml 、编写 HelloWorldAction 类以及展示如何使用Struts2标签在J...

weixin_42608299的博客 970

常用框架学习(一)——Struts2

1.1  Struts2概述1.1.1  什么是Struts2Struts2是由Apache社区的Struts1和Opensysmphony的Webwork整合而来,Struts负责对http请求的处理,Webwork负责业务逻辑处理。1.1.2 运行环境搭建1.导入13个jar包(在Struts2自带的demo中可以找到最少所需包)2.需要在web.xml文件中配置StrutsPrepareAn...

不忘初心的博客 3万+

FPS游戏自动枪械识别+压枪(以PUBG为例)

使用Python3.9作为开发环境,实现一个通用的FPS游戏自动检测枪械配件+压枪宏的软件开发思路

weixin_37827742的博客 3万+

Struts2的执行流程及其工作原理

1.系统架构 Struts2的官方文档附带了Struts2的架构图。 从这张图能够非常好的去理解Struts2 关于图中的Key: Servlet Filters:过滤器链,client的全部请求都要经过Filter链的处理。 Struts Core:Struts2的核心部分,可是Struts2已经帮我们做好了,我们不须要去做这个 Interceptors。Struts2的拦截器。Struts2...

tugangkai的专栏 584

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8256

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1963

struts2的执行流程

Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器Filt

s_shuai88的博客 339

TC3XX - MCAL知识点(九):PWM EB-tresos配置说明及代码浅析

脉冲宽度调制(PWM)驱动器负责提供与AUTOSAR指定的PWM信号生成相关的标准服务。PWM通道的底层定时器驱动是GTM (TOM或ATOM片)或CCU6 (T12或T13片)定时器通道。软硬件匹配关系如下:PWM直接引用的是GTM与CCU6模块,然后GTM与CCU6再关联到Port的,根据软硬件匹配关系,也能调用中断来使用,本例子没使用中断。CCU6是一个高分辨率的16位捕获和比较单元,具有特定的应用模式,主要用于交流驱动控制。特殊的工作模式支持控制无刷直流电机使用霍尔传感器或反电动势检测。

梦想技术家 2884

Struts2执行流程

Struts2执行流程 1. web.xml 部署描述符 2. FilterDispatcher 实现StrutsStatics, Filter接口 (1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤器执行过滤是在doFilter方法中.每个过滤器访问一个FilterConfig对象从中获取初始化参数,一

congcongsuiyue的专栏 499

华为OD机试双机位C卷:完美走位 (C++/C/Py/Java/Js/GO)

华为OD机试双机位C卷 完美走位, 提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机考 完美走位, 华为OD机试 完美走位。

qq_45776114的博客 1724

【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

m0_71589036的博客 251

Struts2的执行流程

Struts2的执行流程  在客户端对服务器发出请求时,通过web.xml文件找到控制器StrutsPrepareAndExecutFilter并调用doFilter()   将请求包装成HttpServletRequest, 然后按照URL是否符合然后确定是否进行预处理。如果符合,则进行编码设置以及包装request为warpRequest。然后在ActionMapping器里查找是否有相应的ac

CoDeleven的博客 387

android studio 2022打开了v1 签名但是生成的apk没有v1签名问题

我使用了Android Studio Flamingo | 2022.2.1 Patch 2版本的IDE编译了一个apk,但是apksigner查看apk的签名信息时,发现只有v2签名,没有v1签名。试着改小一下minSdkVersion 为23重新编译apk,再检测一下签名版本v1居然打开了!参考网上搜索到的方法,手动在build.gradle里面添加。但是编译出来的apk还是只有v2的签名。里面提到了v1签名还和。

hedalei的博客 466

Struts2详细执行流程自己总结

Struts2详细执行流程总结这篇文章是在参考大量资料之下总结出来的,一是减少学习Struts2同学的疑惑,二是顺便自己总结一下提升自己的知识水平,三是抗遗忘。欢迎纠正,谢谢各位朋友,若不慎涉及他人的版权,请qq联系1354611365,我将删除。一、struts2总体框架。先给出总体框架,从战略上分析。保持学习过程中不会出现走邪路的状况。 图1:Struts2的总体框架预览二、解释框架图中的各个...

公子&小白的博客 1万+

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2867

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Struts2】Struts2框架的执行流程

Struts2框架的执行流程 1.浏览器发出helloWorld.action请求至服务器 2.服务器接收后,根据web.xml的配置,将请求发送给指定的Struts2过滤器 3.过滤器根据struts.xml的配置内容,将请求发送给action.HelloWorldAction类的对象,并调用默认的exectue方法 4.根据exectue方法的返回结果,在struts.xml文件中匹配helloWorld的处理结果,完成向helloWorld.jsp页面的跳转 5.页面根据上下文中的内容,借助Strut

Need not to know 199

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Struts2框架的执行流程

1.struts2的流程图 2.描述执行流程 ( 1 ). 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 (客户端提交一个HttpServletRequest请求。) (2)请求被提交到一系列的过滤器(Filter)。 如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher。注...

diligence-zpf 7328

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

struts2执行流程分析

# Struts2执行流程分析**Struts2是一套非常优秀的Web应用框架,是Apache软件基金会下的MVC开源项目。Struts2是缘于WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。****我们学习Struts2时,不仅仅要学习怎么使用它,更要学习它的执行流程和核心理念****首先我们来看下Struts2官方文档提供的Struts2的...

qq_39581763的博客 408
上一篇: struts2中使用拦截器(Interceptor)控制登录和权限
下一篇: Struts2页面到action的三种传值方式
randomnet
博客等级 码龄19年 59粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值