gpt4 book ai didi

java - WEB-INF 下的 Struts 2 Convention Plugin 和 JSP 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:24 24 4
gpt4 key购买 nike

当使用 Struts2 约定插件时,即使没有HelloWorld.java 已定义。

请参阅http://struts.apache.org/release/2.1.x/docs/convention-plugin.html为此。

另一方面,我们将 JSP 文件放在 WEB-INF 下,以避免直接访问 JSP 文件。

我认为约定插件的这种行为破坏了 JSP 访问策略。任何人都可以通过简单地调用动态构建操作来直接访问 JSP。

我说得对吗?!如果是,我们可以禁用此功能吗?

最佳答案

不,你不太正确。如果这些页面在 WEB-INF 下,则无法直接访问。约定插件根据约定从 Action 类创建基于 XML 的配置。因此,您只能访问这些操作返回的结果。约定插件将其配置放在 XWork 包下,如文档和 this 中所述。回答。因此,解决冲突,如果您不指定父包,这是可能的。您还可以使用约定注释来自定义生成的配置。约定插件默认扫描基础包下的类,可以是struts,也可以是actions,可配置,有Action后缀。这些都是约定插件的默认配置。如果您想更改默认设置,您可以使用 struts.xml 中的常量标记或 struts.properties 中的相应属性。

但是,文档并不清楚它是如何处理的

actionless results that is identified by the URL

另外,不清楚用什么 URL 来标识它。我想你已经熟悉了无 Action 配置,你可以在没有 Action 执行的情况下返回结果 SUCCESS,因为默认使用 Action 类。但是,问题甚至不在这里。上面提到的约定插件及其创建的配置还放置了一个未知的处理程序,该处理程序应该处理不存在配置的 URL(即不是由约定创建的)。这就是问题的根源。该插件也不允许替换/覆盖配置。令人高兴的是,有未知的处理程序管理器(如果需要可以替换),它通过 "unknown-handler-stack" 的迭代处理未知的操作,这是由该管理器管理的。使用处理程序堆栈,您可以配置迭代未知处理程序的顺序。请注意,当处理程序返回操作配置时,循环结束。这意味着如果您创建自己的未知处理程序并在堆栈中设置顺序,则可以绕过约定处理程序。
.

关于java - WEB-INF 下的 Struts 2 Convention Plugin 和 JSP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798570/

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