如何在 Struts 2 中使用 DispatcherListener

2023-12-01

有一个界面DispatcherListener在Struts2中。文档说

“一个接口来标记那些想要在init and destroy of a Dispatcher."

但是这个接口怎么用呢。如果我创建一个实现这个接口的类,我应该如何将它配置到Struts2?


When a Dispatcher被实例化后,它可以在初始化或销毁时向侦听器发送通知。参考和代码示例来自here.

简单的用法是通过容器实例化一个beanbean标记并将自己添加到init方法并在被破坏时自行移除,就像被ClasspathConfigurationProvider.

该代码是原始的,只是为了向您展示这个想法

struts.xml:

<bean type="com.opensymphony.xwork2.config.PackageProvider" name="myBean" class="jspbean.struts.MyBean" />

MyBean.java:

public class MyBean implements ConfigurationProvider, DispatcherListener {
  public MyBean() {
    System.out.println("!!! MyBean !!!");
  }

  @Override
  public void dispatcherInitialized(Dispatcher du) {
    System.out.println("!!! dispatcherInitialized !!!");
  }

  @Override
  public void dispatcherDestroyed(Dispatcher du) {
    System.out.println("!!! dispatcherDestroyed !!!");
  }

  @Override
  public void destroy() {
    System.out.println("!!! destroy !!!");
    Dispatcher.removeDispatcherListener(this);
  }

  @Override
  public void init(Configuration configuration) throws ConfigurationException {
    System.out.println("!!! init !!!");
    Dispatcher.addDispatcherListener(this);
  }

  @Override
  public boolean needsReload() {
    return false;
  }

  @Override
  public void loadPackages() throws ConfigurationException {

  }

  @Override
  public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {

  }
}

输出:

15:27:50  INFO (org.apache.struts2.spring.StrutsSpringObjectFactory:42) - ... initialized Struts-Spring integration successfully
!!! MyBean !!!
!!! init !!!
jul 18, 2013 3:27:51 PM org.apache.catalina.startup.HostConfig deployDirectory
!!! dispatcherInitialized !!!
[2013-07-18 06:28:11,102] Artifact jspbean:war exploded: Artifact is deployed successfully
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
INFO: Stopping service Catalina
!!! dispatcherDestroyed !!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Struts 2 中使用 DispatcherListener 的相关文章

随机推荐

  • 提取字符串的一部分

    我需要提取字符串的一部分 例如 01 nbsp nbsp nbsp Artist Name Song Title 所以我在开头有计数器 点和分隔符可以是任何东西 目前分隔符是 var separator nbsp nbsp nbsp 我想提
  • 即使在 android 9.0 (pie) 中启用了夜间模式,如何在我的应用程序中禁用夜间模式?

    我在 android 派发布之前创建了我的应用程序 在我放置的每个布局中android background white 它在每个设备上都能正常工作 但是当我的兄弟安装该应用程序并启用时night mode我的应用程序只需一个动作就变成了一
  • 自定义排序排序

    NET C 有没有办法对 a 进行排序List
  • Django i18n_patterns:resolve() 无法按预期工作

    解决这个问题后here 还有另外一个 如果你在这里使用翻译url系统https docs djangoproject com en 1 8 topics i18n translation 你会看到你添加了类似的模式urlpatterns i
  • 如何像 Instagram 一样在圆形图像视图周围设置边框?

    我想在圆形图像视图周围设置一个圆形边框 就像 Instagram 故事一样 有人可以帮忙吗 这是我的图像视图
  • 将命令添加到 Tkinter OptionMenu?

    我正在用 Python 2 7 8 编写一些代码 其中包括OptionMenu小部件 我想创建一个OptionMenu当选项更改时调用函数 但我也希望在列表中找到可能的选项 作为我的最终选项OptionMenu会有很多选择 我使用以下代码创
  • 在 postgres 中,使用表达式 array[] 与使用带有 {} 的数组的字符串表示形式有什么区别吗?

    使用两种不同的语法引用或创建数组有什么区别 array 1 2 3 vs 1 2 3 使用两者有什么好处吗 The ARRAY is the 表达与值构造函数 这 是字符串文字 constant 处理过程略有不同 但对于几乎用例来说 没有任
  • Launch4j / Windres:如何正确设置路径?

    我为我的项目配置了 launch4j 当我在 windowsXP 上开发时 我又使用了它 它在那里工作 现在我也需要它在 mac 上构建 我的build xml
  • 在 Mootools 中解析 XML

    似乎没有任何关于在 Mootools 中解析 XML 的有用文档 要么它太简单了 没有人愿意提及它 要么它太难了 每个人都放弃了尝试 有没有人有任何简单的跨浏览器方法来使用 Mootools 解析 XML 这是我的小 XML 文件 data
  • 将一个数据帧拆分为多个数据帧

    我有一个数据框 需要根据正则表达式搜索将其拆分为多个数据框 搜索没有固定的模式 即有时只有一个正则表达式 有时是多个正则表达式的组合 这是一个仅提取一组行的最小示例 Name lt c John Jane Arthur Maggie Age
  • 使用 Azure Active Directory 对用户进行身份验证后执行代码

    我使用 VS2015 创建了一个 ASP NET MVC Core 1 1 0 应用程序 在对话框中 我选择了连接到 Azure AD 的选项 因此 VS 生成了样板代码 并且正如预期的那样 应用程序将我重定向到 Microsoft 的登录
  • 插入一个元素

    Javascript中是否有一种方法可以在当前节点之后插入一个元素 我知道有一种方法可以在XML的当前节点之前插入一个元素 但是有没有一种方法可以在当前节点之后插入一个元素 在当前节点之后 只需获取当前节点的下一个兄弟节点并在该节点之前插入
  • 对单表使用 Merge 语句

    是否可以对单表使用merge语句 我想在插入之前检查是否已存在相同的值集 则应更新该记录 如果不存在 则应插入该记录 我在互联网上搜索过 但我得到了带有 2 个表的合并语句的示例 我在一张桌子上尝试过 但无法获得积极的结果 我试图检查的值将
  • Realm 数据库中的搜索操作速度

    这是我的模型RealmObject class public class ARDatabase extends RealmObject PrimaryKey private String uid private String namex p
  • 未捕获的类型错误:无法调用未定义的方法“hasChildNodes”

    我正在尝试使用 jquery 中的 ajax 请求读取 XML 下面是代码 它在 IE 中工作正常 但是当我在 Chrome 上运行它时 我遇到了这个错误 未捕获的类型错误 无法调用未定义的方法 hasChildNodes ajax typ
  • 如何从 querySelectorAll 获取所有元素并与 addEventListener 一起使用

    我有一个块 当我单击加号时 会创建 4 个子块 当我单击任何子块加号按钮时 我必须添加 rooms guests plus类 它们增加自0 to 5当单击减号按钮时 rooms guests minus类 以同样的方式减少 const ro
  • 在 Android 上运行模拟器时出错

    我正在尝试在 Android 上运行 PhoneGap 应用程序 当我运行命令时 phonegap run android emulator verbose 我收到这个错误 Running command getprop emu uuid
  • 具有连续分隔符的 strtok_s 行为

    我正在并行解析 3 个值 这些值用特定的分隔符分隔 token1 strtok s str1 separator nextToken1 token2 strtok s str2 separator nextToken2 token3 str
  • Python“使用错误的参数类型调用”错误

    我明白为什么我会收到此错误 它正在寻找我的对象作为参数 并接收字符串值 但我很困惑 不知道解决方案是什么 以下代码片段只是尝试运行此命令 self buttonGroup addButton self ui m001 x 次数 num 0
  • 如何在 Struts 2 中使用 DispatcherListener

    有一个界面DispatcherListener在Struts2中 文档说 一个接口来标记那些想要在init and destroy of a Dispatcher 但是这个接口怎么用呢 如果我创建一个实现这个接口的类 我应该如何将它配置到S