我如何使用 Confluence 的 servlet-filter 模块?

How do I use Confluence's servlet-filter module?

我最近开始了解 Confluence 的 servlet-filter 模块。但是,在尝试让它工作之后,我 运行 陷入了死胡同。我在这里获取我的信息:

https://developer.atlassian.com/confdev/confluence-plugin-guide/confluence-plugin-module-types/servlet-filter-module

这是我试过的。我像这样注释了我的 atlassian-plugin.xml 文件:

<servlet-filter name="My Test Filter" key="OURAPP" class="com.test.filters.HelloWorldFilter" location="after-encoding" weight="100">
    <description>Forwards you to a test "Hello, world!" page.</description>
    <url-pattern>/helloworld</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</servlet-filter>

然后,我在 com/test/filters 创建了一个名为 HelloWorldFilter.java 的标准 Java servlet(扩展了 HttpServlet 等)。在 "doGet()" 方法中,我只有一个 System.out.println() 行显示 "IN THE FILTER"。但是,当我转到以下 URL 时,我总是会看到 "Page Not Found" 错误页面:

http://127.0.0.1:8090/helloworld

http://127.0.0.1:8090/OURAPP/helloworld

http://127.0.0.1:8090/plugins/OURAPP/helloworld

http://127.0.0.1:8090/rest/helloworld

http://127.0.0.1:8090/rest/OURAPP/helloworld

http://127.0.0.1:8090/OURAPP/rest/helloworld

我们有一个自定义的 Confluence 插件,我们称它为 OURAPP,它不仅通过浏览器 GUI 提供数据,还通过 Confluence 的 REST 功能提供数据。我正在尝试创建一个过滤器来管理有效和无效的请求。我们可以在以下位置访问 REST:

http://127.0.0.1:8090/rest/reststuff/v1/some_function_here

就像我一开始所说的,我 运行 陷入了死胡同,不知道如何让它发挥作用。任何人都可以提供任何建议或示例代码来说明如何让它工作吗?

您的调度员标签缺少结尾的“>”:

    <dispatcher>REQUEST</dispatcher

此致, 戈尔卡

经过几天的折腾,我终于弄明白了。我是在扩展 javax.servlet.http.HttpServlet 而不是实施 javax.servlet.Filter。在我改为实现 Filter 并实现所有正确的方法后,我的 servlet 过滤器开始工作 127.0.0.1:8090/helloworld。有许多使用标准 Java Servlet(即扩展 HttpServlet)的示例,但 [显然] 不适用于 Confluence。我希望这可以帮助那些正在为 Confluence 的困惑而苦苦挣扎的其他人。感谢所有花时间阅读的人。