Struts2解释器:
负责异常处理、文件上传、回调生命周期以及认证。支撑action的预处理和后处理
涉及的解释器:
1.Spring Framework -- ActionAutowiringInterceptor
2.Request String and Form Values -- ParametersInterceptor
3.Servlet-based object -- ServletConfigInterceptor
接下来逐一学习。
第一个解释器是一个单纯的spring框架解释器。(没找到过多解释)
第二个解释器很明显与action访问request以及form中的数据相关。
以上两个解释器都对操作的action没有任何要求。从这里我们看得出,解释器一词
更多使用了依赖注入的机制。在配置文件中,指定了对应的action,那么调用过程
中,便针对该依赖,进行数据的注入,而程序员无需关心数据的来源,仅仅进行操作
即可。但是,看到这里,我的问题就是:如果这样的解释器存在,而action给出的
格式或者定义是不合法的时候。调试会不会比version1.1里面复杂的多呢?
第三个解释器需要依赖interface实现,具体如下:
1)SessionAware -- 通过一个Map访问一个Session所有属性
2)ServletRequestAware -- 访问 HttpServletRequest 对象的接口。这里,
HttpServletRequest对象是在上一个版本的Struts里面很重要的数据获取来源。
当时页面的form数据内容就包含其中。
3)RequestAware -- 通过一个Map访问Request属性
4)ApplicationAware -- 通过一个Map访问Application属性
备注:1、2、4是jsp很重要的几个属性空间,具备不同的生命周期。看来Struts2
提供了很强的兼容性。也许将来会提供更令活的数据访问方式。
5)ServletResponseAware -- 访问HttpServletResponse对象的接口,这是上一个
版本中action提供的execute方法的另一个重要参数。一般作为出口参数。
6)ParameterAware -- 通过一个Map对所有request和form数据进行访问
7)PrincipleAware -- 访问PrincipleProxy对象。(这里没有接触,照抄原话)
(PrincipleProxy) this object implements the principle and role methods
of the HttpServletRequest object in implementation, but by providing a
proxy, allows for implementation independence in the action.
8)ServletContextAware -- 提供访问ServletContext对象的接口。
要注意,最重要的两个解释器并没有介绍。虽然这里说了这么多,这不是最重要的
因为我们最终要接受并熟练掌握Struts2框架的实现机制,才能灵活使用新框架,
新功能。
接下来我们看看通过这些解释器我们怎么实现依赖注入,从而将数据获取很轻易的
从我们的程序里面隐藏的呢?
首先我们记得在struts.xml里面,指定package的位置上,我们有这样一个标签
<package>其中一个属性 extends,指明了继承自struts-default。这里说明,在
struts-default里面已经有一个默认的解释器配置。因为模块化,所以每个package
被声明的时候最简单的使用解释器