将JSP页面放在Apache Struts应用程序中的WEB-INF文件夹中是一个好主意吗?

时间:2011-12-06 21:05:23

标签: jsp struts2

我正在尝试在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 /

2 个答案:

答案 0 :(得分:4)

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

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

它确实在配置xml方面节省了很多。除了设置全局struts2参数(开发模式并将主题设置为简单)之外,我几乎不使用xml。除了那个注释之外,还要处理其余的事情。你应该试一试。

convention插件不会阻止您在舒适的地方使用xml,因为xml优先,并且不会导致使用tile时出现任何问题。

答案 1 :(得分:2)

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

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