如何正确地将 JSP 放入 WEB-INF 文件夹中?
Posted
技术标签:
【中文标题】如何正确地将 JSP 放入 WEB-INF 文件夹中?【英文标题】:How to properly put JSPs in the WEB-INF folder? 【发布时间】:2011-05-16 13:08:07 【问题描述】:我的问题是如何以正确的方式将所有JSP文件放入WEB-INF/JSP/
?
是否有任何配置,因为我知道的结构是:
WEB-INF / JSP --> all jsp is reside in that folder
/ CLASSES -- all classes is reside that folder
/ LIB --> library file reside in that folder
如何根据规范正确设置。请帮我回答这个问题。
【问题讨论】:
【参考方案1】:根据 J2EE 规范,这不是标准做法或有效(我知道使用大多数 java Web 开发框架,如 Struts、Spring MVC、Stripes 可以做到这一点)。根据规范,我们所有可公开访问的页面都应位于WEB-INF
之外。但是,如果您希望页面位于 web-inf
中,您可以做的是按照控制器 servlet 的方式创建一个 servlet,并将请求从您的 servlet 转发到 jsp 页面,这些页面可以位于 WEB-INF
中,并且没有特殊的配置可以做到这一点。
【讨论】:
如何“不是标准做法或有效”?如果您想实现 MVC,其中您希望避免在没有预处理控制器的情况下访问 JSP 页面,这是完全有效的最佳实践。 将 JSP 文件放在 WEB-INF 文件夹中是完全有效的,也是最佳的安全实践。 我从这个答案中学到了很多,根据规范无效,但被普遍使用,并向我解释了如何通过使用 MVC 访问放入 WEB-INF 的 jsp 来保护可公开访问的 jsp .【参考方案2】:你可以把你的JSP放进去
WEB-INF/jsp
文件夹并使用 servlet 访问该 JSP。
创建login.jsp,然后使用preloginservlet.java 访问该JSP。此 servlet 重定向到 WEB-INF/jsp
文件夹中的 login.jsp。
【讨论】:
嗨,我们可以直接访问 login.jsp 吗? @GMsoF,我知道您的评论是旧评论,但为了其他人。将jsp
文件放在WEB-INF/<dirname>
中的全部目的是防止直接访问这些文件。另一种方法是使用与此答案相同的想法,但使用 jspf
片段文件代替;然后可以在编译页面时将它们从 WEB-INF/
文件夹外部导入到单个 index.jsp
中。【参考方案3】:
在 WEB-INF 之外创建一个包含您的 JSP 的中间 JSP。
例如 您在 WEB-INF 中的页面是 ProjectName/WEB-INF/JSP/yourPage2.jsp 创建一个页面 ProjectName/yourPage1.jsp
在 yourPage1.jsp 中编写以下代码
yourPage1.jsp
<%@ include file="WEB-INF/JSP/yourPage2.jsp" %>
【讨论】:
【参考方案4】:您在 WEB-INF 文件夹外创建一个 jsp 页面,并在该 jsp 内使用 jsp:forward as
在 web.xml 文件中,在欢迎文件列表中使用外部 jsp 名称。
它对我有用...
【讨论】:
以上是关于如何正确地将 JSP 放入 WEB-INF 文件夹中?的主要内容,如果未能解决你的问题,请参考以下文章