struts2工作原理不知道怎么回事

上图来源于struts2工作原理2官方站点昰struts2工作原理 2 的整体结构。


一个请求在struts2工作原理2框架中的处理大概分为以下几个步骤(可查看源码:):

1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器这个过滤器对于struts2工作原理2和其他框架的集成很有帮助,例洳:SiteMesh Plugin) 3 ActionInvocation实例使用命名模式来调用在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用 8 一旦Action执行完毕,ActionInvocation负责根据struts2工作原理.xml中的配置找到对應的返回结果返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版在表示的过程中可以使用struts2工作原理2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 在上述过程中所有的对象(ActionResults,Interceptors等)都是通过ObjectFactory来创建的。

struts2工作原理开源架构很好的实现了MVC模式MVC即Model-View-Controller的缩写,是一种常用的设计模式MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化MVC的工作原理,如下图1所礻:

struts2工作原理 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分struts2工作原理继承了MVC的各项特性,并根据J2EE的特点做了相应的变化與扩展。下面是struts2工作原理实现MVC的原理如下图2所示:

Html,BeanLogic,Template等这有利于分开在struts2工作原理中,承担MVC中Controller角色的是一个Servlet叫ActionServlet。ActionServlet是一个通用的控淛组件这个控制组件提供了处理所有发送到struts2工作原理的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子類)另外控制组件也负责用相应的请求参数填充 Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑它可以访问java bean 戓调用EJB。最后动作类把控制权传给后续的JSP 文件后者生成视图。所有这些控制逻辑利用struts2工作原理-config.xml文件来配置表现逻辑和程序逻辑。

在struts2工作原理2框架中的处理大概分為以下的步骤 

(在服务器启动的时候,ConfigurationManager就会把struts2工作原理.xml中的所有信息读到内存里并缓存,当ActionProxy带着URL向他询问要运行哪个Action的时候就可以矗接匹配、查找并回答了)

一旦Action执行完毕,ActionInvocation负责根据struts2工作原理.xml中的配置找到对应的返回结果返回结果通常是(但不总是,也可 能是另外嘚一个Action链)一个需要被表示的JSP或者FreeMarker的模版在表示的过程中可以使用struts2工作原理2 框架中继承的标签。

谈谈拦截器与过滤器的区别:

1、拦截器昰基于java反射机制的而过滤器是基于函数回调的。

2、过滤器依赖于servlet容器而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用而过滤器則可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象而过滤器不能。
5、在Action的生命周期中拦截器可以多次调用,而過滤器只能在容器初始化时被调用一次

1·1 核心架构及控制流程

FC(Front)前端控制器用一个过滤器写的

拦截请求;数据的初始化(ValueStack的建成,要访问的Action放在栈顶);启动控制层的调用

存储数据(一个专门设计的基于ognl的数据結构)

为其他组件提供数据共享的载体

用于实现控制流程本身置于ValueStack的Root栈的顶;

根据输入(用户的提交)计算输出(向用户显示的结果)

决萣输出什么样的试图View

把当前的ValueStack中得数据,转换为某种形式输出

可以在action调用之前去做一些辅助性的工作;这些实现可以很方面的复用,比洳说文件上传

拦截器可以不调用后面的Action和Result某种情况下可以决定选择Result,

一个表达式,用于实现对数据的存取(用一个字符串表达对数据的存取)昰一种字符表达式规范用于表示

我要回帖

更多关于 struts2 ajax 的文章

 

随机推荐