【问题标题】:How to properly put JSPs in the WEB-INF folder?如何正确地将 JSP 放入 WEB-INF 文件夹中?
【发布时间】: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 

如何根据规范正确设置。请帮我回答这个问题。

【问题讨论】:

    标签: java jsp servlets jakarta-ee web-applications


    【解决方案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 名称。

      它对我有用...

      【讨论】:

        猜你喜欢
        • 2012-01-29
        • 2014-11-12
        • 2014-05-20
        • 2013-11-19
        • 2014-08-17
        • 2015-01-23
        • 2012-12-30
        • 1970-01-01
        • 2018-12-12
        相关资源
        最近更新 更多