-
有关Struts2中DispatcherListener的使用0
在读《Struts2技术内幕》这本书的时候,在核心分发器Dispatcher初始化这一块,有一个问题始终没有弄明白,希望各位不吝赐教。
问题描述:
作者在第三部分的第9章讲Dispatcher初始化时有这样一句话:
有了DispatcherListener接口,相当于我们拥有了在Dispatcher初始化过程中进行自由扩展的一个接口。这也是Struts2在初始化主线中为我们提供的一个重要扩展点。
但我看了API、看了源码,也没有找到使用DispatcherListener的办法,请问我们应该如何使用它,作者上面的话是什么意思?假设一定要用它的话..
Dispatcher源码中是这样的:
/** * Store list of DispatcherListeners. */ private static List<DispatcherListener> dispatcherListeners = new CopyOnWriteArrayList<DispatcherListener>();
/** * Add a dispatcher lifecycle listener. * * @param listener The listener to add */ public static void addDispatcherListener(DispatcherListener listener) { dispatcherListeners.add(listener); } /** * Remove a specific dispatcher lifecycle listener. * * @param listener The listener */ public static void removeDispatcherListener(DispatcherListener listener) { dispatcherListeners.remove(listener); }
Dispatcher的init方法部分代码:
if (!dispatcherListeners.isEmpty()) { for (DispatcherListener l : dispatcherListeners) { l.dispatcherInitialized(this); } }
在Dispatcher初始化过程中并没有调用到以上方法的地方啊!在Dispatcher的init方法之前好像没有addDispatcherListener调用的地方,那么我们应该如何使用呢?
谢谢...
<!--EndFragment--> <!--EndFragment-->
2012年9月06日 14:19
2个答案 按时间排序 按投票排序
-
采纳的答案
这个struts2自己没有用到。
用于扩展使用,比如你要定制Dispatcher,或者修改Dispatcher的某些东西;
可以继承FilterDispatcher 然后获取Dispatcher 然后添加DispatcherListener。
就是一个扩展点,但好像没见有用的。
还可以通过继承StrutsPrepareAndExecuteFilter
protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
}
来完成一些扩展。2012年9月06日 14:47
相关推荐
- 在JSP页面中使用标签,如`s:textfield name="username"`绑定Action的username属性。 - 配置Struts2的配置文件(struts.xml或struts.properties),定义Action和结果。 通过以上介绍,我们可以看出Struts2标签库...
这样做是为了确保Struts2在服务器启动时能优先加载这个servlet,以便支持FreeMarker模板中使用Struts2的标签。 在`struts.xml`配置文件中,定义一个action,比如`test`,并指定其结果类型为`freemarker`,这样当...
使用此工具可以帮助企业及时发现并修复Struts2框架中的安全漏洞,减少网络安全风险,确保数据和系统的安全。同时,对于开发者来说,了解Struts2的安全隐患以及如何避免它们是至关重要的,这样才能更好地保障应用的...
struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2...
以上就是关于"留言板留言板struts2"项目可能涉及的Struts2相关知识点。这个项目可能包含了Action编写、视图渲染、用户交互、数据验证等基本功能,是学习和理解Struts2框架的一个很好的实践案例。通过分析和运行这个...
这个标题和描述提到的"struts2-scan"是一种工具,专门用来检测Struts2框架中的安全漏洞。 Struts2漏洞通常涉及到框架的核心组件,例如OGNL(Object-Graph Navigation Language)表达式,这是一种强大的语言,允许在...
在项目中使用Struts2时,我们需要配置struts2的主配置文件(struts.xml),定义Action、结果类型、拦截器栈等。Action是业务逻辑的入口点,Result表示一个操作完成后转向的页面或结果。拦截器是Struts2的一大特色,...
文档中还会讲解如何使用Struts2的异常处理机制,以及如何调试和解决常见的运行时问题。 总的来说,这个压缩包对于想深入理解并熟练掌握Struts2框架的开发者来说是宝贵的资源。通过API文档可以了解框架的底层机制,...
- **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...
在`AndroidTest`这个文件名中,虽然不明确,但可能包含了一个Android相关的测试部分,或者是一个使用Struts2实现的接口,用于与Android客户端交互。如果涉及到Android,可能需要了解RESTful API设计、JSON数据交换...
### Struts2初步使用总结 #### 一、Struts2原理概述 **1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得...
在本压缩包中,你可能会找到关于Struts2框架配置和使用的一些关键文件,这将帮助你在未来回顾或重新学习Struts2时快速上手。 首先,让我们深入了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务...
在开发租房网站的过程中,学生将学习如何创建Action类、配置struts.xml、设计数据库模型、编写DAO和Service层代码、实现页面交互以及使用Struts 2提供的各种功能来优化用户体验。这将帮助他们掌握Web应用开发的基本...
"使用说明-jar包.txt"很可能是一个文本文件,提供了关于如何在项目中使用Struts2库的指导。通常,Struts2的核心库和其他依赖库会以JAR(Java Archive)文件的形式包含在项目中,这些JAR文件包含了框架的所有类和方法...
Struts2 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂、多变的需求。 Struts2 标签分类 Struts2 标签库可以分为三大类:UI 标签、非 UI 标签和 Ajax 标签。 UI 标签 UI 标签主要用于生成 HTML ...
在开始使用Struts2之前,我们需要先进行环境配置。以下将详细介绍Struts2的初始使用环境配置步骤。 首先,确保你已经安装了Java Development Kit (JDK)。JDK是开发Java应用的基础,你需要至少JDK 1.6或以上版本来...
总的来说,Struts2接口文档是学习和使用Struts2框架不可或缺的工具,它能帮助开发者高效地理解和使用框架提供的各种组件和接口,提升开发效率,减少错误,并有助于深入理解MVC模式在实际项目中的应用。通过仔细研读...
在Struts2中,Jquery可以与Ajax结合使用,实现页面的无刷新更新。 Ajax(Asynchronous JavaScript and XML)技术允许前端与后台进行异步通信,无需整个页面刷新,提高了用户体验。在Struts2框架下,我们可以使用...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。这个“struts2全部的jar包”压缩文件包含了运行Struts2应用程序所需的所有核心库和依赖组件。这里我们将深入探讨Struts...
3. `ognl.jar`:Object-Graph Navigation Language (OGNL)是Struts2中使用的表达式语言,用于在视图层和模型层之间传递数据。 4. `freemarker.jar`和`velocity.jar`:这两种是模板引擎,用于生成动态HTML页面。...