如何正确地将 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 文件夹中?的主要内容,如果未能解决你的问题,请参考以下文章

web-inf下的jsp怎么访问

如何正确地将 UIButton 中的图像放入图像中?

如何正确地将不可滚动的 UITableView 放入 UIScrollView?

eclipse中如何编译 javabean?

WEB-INF下的jsp文件如何访问css和js文件

如何将我的 Spring URL 映射到 /WEB-INF/views 中的 JSP 文件?