说说你对struts2的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说说你对struts2的理解相关的知识,希望对你有一定的参考价值。

struts首先是MVC框架
MVC是一种设计模式
将应用程序分成了视图、模型、控制器三部分,使代码逻辑清晰,同时提高移植性
M与V之间--观察者模式
V与C之间--策略模式

MVC的工作流程
请求----控制器调用模型处理,返回数据-----控制器用相应的视图格式化模型返回的数据完成相应

Struts2在以上流程中解决了三个问题:
1. 控制器如何根据用户的请求决定调用哪个模型(具体是模型中的Action组件)进行处理
2. 如何在业务逻辑处理器与serv let API 分离的情况下使处理器获得请求参数,并得以执行
3. 如何将处理后返回的数据传给相应的视图生成动态网页响应给用户

结合Struts的请求流程加以说明

技术分享


客户端请求----经三个过滤器(ActionContextCleanUp,其他过滤器,到FilterDispatcher核心控制器)
FilterDispatcher询问ActionMapper是否需要调用Action来处理,如果ActionMapper决定调用,FilterDispatcher就把对请求的处理交给了ActionProxy
ActionProxy通过Configuration Manager 询问框架的配置文件,找到需要调用的Action类
ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的拦截器,每执行完一个
拦截器,会调用invocation的invoke方法,把请求传给下个Interceptor,所有的Interceptor执行完以后,会执行Action
Action执行根据后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果
这个返回结果可能是一个 需要表示为JSP或FreeMarker的模板,或者是另一个Action链
如果是前者,表示的过程中可以使用struts2的标签,生成动态网页后返回给用户
如果是后者,则再把上述过程执行一遍
 

以上是关于说说你对struts2的理解的主要内容,如果未能解决你的问题,请参考以下文章

爱创课堂每日一题第三十五天- 说说你对闭包的理解?

Vue 怎么缓存当前的组件?缓存后怎么更新?说说你对keep-alive的理解是啥

《我要进大厂系列 一》-说说你对volatile关键字理解

面试题:说说你对ZooKeeper集群与Leader选举的理解?

面试题:谈谈你对hibernate的理解

[Redux/Mobx] 什么是redux?说说你对redux的理解?有哪些运用场景?