gpt4 book ai didi

java - struts2插件如何工作

转载 作者:行者123 更新时间:2023-11-30 04:51:33 28 4
gpt4 key购买 nike

我们目前正在使用 struts2-jquery我们的网络应用程序中的插件。该插件工作得很好,但我对 struts2 插件的内部工作原理有一些疑问。

我们将插件添加到类路径中,并且可以使用标签库中定义的标签。当我查看生成页面的源代码时,我可以看到资源已正确包含:

<script type="text/javascript" src="/struts/js/base/jquery-1.x.x.min.js"></script>
<script type="text/javascript" src="/struts/js/base/jquery-ui.min.js"></script>
...

第一个问题是:我们的 Web 应用程序如何知道 /struts/ 指向 jquery 插件。我们没有为此定义任何内容。 似乎来自 DefaultStaticContentLoader 类。有一种方法是这样的:

public boolean canHandle(String resourcePath) {
return serveStatic && (resourcePath.startsWith("/struts/") || resourcePath.startsWith("/static/"));
}

第二个问题是,当我们调用像 /struts//struts/themes/ 这样的 url 时,应用程序会从插件中以八位字节流的形式下载文件(最终结果似乎是一个包含 css、js 和图像文件的 zip 文件)。为什么会这样做?有没有办法防止这种情况发生。

第二个问题比第一个问题更重要。

谢谢,汤姆。

编辑:问题一已得到解答。

最佳答案

Well Plugin 由 S2 提供,用于扩展其功能并改变 S2 在某些用例中的工作方式。Struts 2 插件包含扩展、替换或添加到现有 Struts 框架功能的类和配置。插件应包含 struts-plugin.xml 文件来告诉 S2 哪个是插件的入口点。

所以当S2启动时,它会以特定的方式和顺序加载配置。

  1. struts-default.xml
  2. struts-plugin.xml
  3. struts.xml

因此,struts-plugin.xml 作为插件 (jar) 的一部分将由 S2 加载,并将向其自身注册其存在。

更多详情请引用官方文档

JQuery 插件的 struts-plugin.xml 文件中的典型条目是

<struts>
<bean type="org.apache.struts2.views.TagLibrary" name="sj" class="com.jgeppert.struts2.jquery.views.JqueryTagLibrary" />
</struts>

这告诉 S2 JqueryTagLibrary是插件的入口点。您提到的加载静态内容是默认的S2处理机制,直到我们不提供任何标准机制。

Struts 提供了 StaticContentLoader 的默认实现,即 org.apache.struts2.dispatcher.DefaultStaticContentLoader 。此加载程序将处理以“/static/ ”开头的网址。有关 S2 如何通过插件及其分数 jar 提供静态内容的详细信息,请参阅文档

关于java - struts2插件如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734261/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com