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开发已有的概念/操作/模块,不做说明。