Struts深入剖析

来源:互联网 发布:推荐几家淘宝高仿鞋店 编辑:程序博客网 时间:2024/05/19 18:46

  • Struts2XWork的关系

(1)与WebWork2相同,Struts2框架也是由两部分组成:XWork2和Struts2。
(2)XWork是一个命令模式框架,它是Struts2的基础。
(3)XWork提供了很多核心功能:
a,IoC(Inversion of control,控制反转)容器,
b,强大的表达式语言 (OGNL:Object Graph Navigation Language-----对象图像导航语言)
c,数据类型转换,
d,验证和可插入的配置。
(4)XWork框架的核心概念包括action,拦截器(inerceptor)和result.

  

  • Struts2拦截器工作原理


  • Struts2与XWork2之间的交互图


(1)一个HTTP请求到达Struts2的FilterDispatcher之后,就会被转换成一个action command.
(2)这个action command在穿越了一系列Struts2和XWork的拦截器(1~3)之后,最后执行用户编写的Action实例。
(3)在Action执行后,响应还会穿越相同的拦截器,按照与请求相反的顺序即拦截器(3~1).
(4)最后通过Struts2的HttpServletResponse转换成Web可识别的响应,如JSP。

  • Struts2的数据流图


(1)当接收到一个HttpRequest,Interceptor做一些拦截或者初始的工作;
(2)当外部的HttpServletRequest到来时,初始到了Servlet容器传递给一个标准的过滤器链;ActionContextCleanUp这个在集成插件方面非常有用。Other filters(SitMesh,etc) 
(3)调用FilterDispatecher会去查找相应的ActionMapper;
(4)如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy,ActionProxy将会通过ConfigurationManager来查找配置struts.xml;
(5)下一步将会通过ActionInvocation来负责命令模式的实现(包括调用一些拦截器Interceptor框架,在调用action之前),一旦action返回,会查找相应的Result,Result类型可以是JSP或者FreeMark等;
(6)这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序),响应的返回是通过我们在web.xml中配置的过滤器;
(7)如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理threadLocal ActionContext;
(8)如果ActionContextCleanUp不使用,则将会去清理threadlocal。

  • 接收用户数据问题
(1)开发Web应用程序,首先应会遇到对用户输入数据的接收,传统的Web应用程序是由开发人员调用HttpServletRequest的getparameter(String name)方法从请求中(2)获取数据,而Web框架都提供了数据绑定机制,由框架从请求中获取数据然后绑定到一个JavaBean对象中。
(3)Struts2提供了多种方式用于接收用户输入的数据。
(4)Struts2的action完全与Web解耦,要获取Web层的数据,需要使用ActionContext,它为action提供了一个执行上下文。

  • 访问request,session,application对象




0 0
原创粉丝点击