Struts2架构图解

Struts2架构图解

前言

公司的一些老项目里偶尔还能碰到基于struts框架编写的工程,但是在Spring流行的现在,新的项目开发已经不会去使用struts框架了(很多老的框架技术就已经不再被企业使用啦)。
本文只是浅显地对struts做一个图解说明,仅代表个人对于该框架的理解。

简单理解

Struts是MVC思想的一种实现。
Struts是基于原生Servlet的一层封装。

架构图


(这图应该是有些年限了,但我只是简单地做个了解而已,问题不大。)

ActionMapper

用来解析请求地址。
原生Servlet开发中,请求是通过<servlet></servlet>标签配置的。struts的配置方法与原生不同,所以需要ActionMapper对配置做解析,得到请求地址。

FilterDispatcher

Filter

原生的Filter一样的作用。

Dispatcher

中文译名调度者,用来完成请求的转发。根据ActionMapper传过来的请求地址找到对应的Action。

ActionProxy和Interceptor

ActionProxy:

Action的代理类。执行ActionProxy.invocation之后调用实际被代理的Action对象。

Interceptor:

中文译名拦截器。AOP思想的一种体现。在Action运行时,切入一些拦截器方法。如图:Interceptor1可以是log输出功能,Interceptor2可以是权限判断功能。

源码我没有去看过,它可能是这样的:

class ActionProxy extends Action {
    public void doAction() {
      Interceptor1();
      Interceptor2();
      super.doAction();
      Interceptor2();
      Interceptor1();
    }
}

以上也只是我基于AOP思想自己猜测的实现,struts到底是怎么实现的那就得去看源码了。(个人认为中间件没有了解实现的必要)

其他的一些模块

其他未作说明的模块都是原生的Servlet+Jsp开发已有的概念/操作/模块,不做说明。

posted @ 2022-10-24 16:14  CodingLyfe  阅读(13)  评论(0编辑  收藏  举报