【问题标题】:Is it a good idea to put JSP pages inside the WEB-INF folder in an Apache Struts application?将 JSP 页面放在 Apache Struts 应用程序的 WEB-INF 文件夹中是个好主意吗?
【发布时间】:2012-01-14 11:08:12
【问题描述】:

我正在尝试在 Apache Struts 2 中实现我的项目,但我对这项技术不是很熟悉。同时,我在某处看到,在 WEB-INF 文件夹中创建 Java Server Pages (JSP) 页面是一种有效的方法。在论坛上他们说这样做会增加网站的安全性,因为 JSP 页面不能直接通过 URL 访问,只能通过其操作。

我也建立了一些页面,但问题是我必须像这样写下我的所有操作:

<action name=".." class=".." method=".." >
  <result name="success"> /WEB-INF/pages/index.jsp</result>
</action> 

这样写得到了正确的结果;但是像这样编写动作页面是一种好方法吗?这会导致我的项目出现任何问题吗?我可以使用命名空间在操作中删除这个 /WEB-INF/ 吗?

【问题讨论】:

    标签: jsp struts2


    【解决方案1】:

    听起来您正在寻找的是减少配置(至少部分)。请参阅“struts2-conventions-plugin”:http://struts.apache.org/2.2.3.1/docs/convention-plugin.html

    默认情况下,它喜欢放置页面(这很容易覆盖,但我不打扰): /WEB-INF/content/my-page.jsp

    它确实节省了大量配置 xml 的时间。除了设置全局struts2参数(开发模式并将主题设置为简单)之外,我几乎不使用xml。除此之外,注释负责其余的工作。你应该试一试。

    约定插件不会阻止您在您喜欢的地方使用 xml,因为 xml 具有优先权,并且在使用图块时不会导致任何问题。

    【讨论】:

      【解决方案2】:

      /WEB-INF 是必需的,因为它是 JSP 路径的一部分。 package/action 命名空间与 JSP 路径解析无关(在默认包中,无论如何都没有插件)。

      这也与Tiles无关; Tiles 使用自己的配置文件,并且还需要 JSP 位置的完整路径名。在 Struts 2 配置中,您将引用 tile 定义(并使用 "tiles" 结果类型)。

      【讨论】:

      • 但在链接mkyong.com/struts2/… 中他们说可以使用命名空间管理项目文件夹。
      • WEB-INF下的Java包、命名空间和文件夹结构是由conventions插件关联的,你看的和你看的没有关系。在第一个 xml 中,您会看到他们可以将这些欢迎文件放在任何地方,包括同一个文件夹,因为路径是硬编码的,所以没有自动管理。它是手动的,因此根本没有管理。
      • @user359187 这就是我添加“在默认包中”部分的原因。如果 JSP 路径没有以 / 开头,那么它们将在 namespace 属性值之前添加。我认为有一种方法可以为标准的非插件调度程序结果设置根路径,但我目前看不到;我稍后会跟进。
      • @DaveNewton 嗨,您提到的设置root 的可能属性是否有任何更新信息?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2013-12-21
      • 2011-05-16
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多