【问题标题】:Include JSP file with Java使用 Java 包含 JSP 文件
【发布时间】:2011-08-03 06:04:14
【问题描述】:

我知道在 jsp 中包含和外部文件可以通过以下方式完成:

<%@ include file="banner.jsp" %>

但是有没有办法在 java 类/对象中做到这一点?

【问题讨论】:

  • 你想在java clsas中包含jsp ?????????????
  • @Jigar Joshi:包含来自 Servlet 的 jsp 视图是完全合理的做法。
  • @Jigar:通常我会嘲笑你那些问号,但在这种情况下,我觉得你是有道理的:)
  • 请注意,@include 不能包含外部文件。该文件必须位于相同的网络内容中才能正常工作。
  • 进一步@BalusC 的评论,来自JSTL 的&lt;c:import&gt; 能够包含外部文件,因此您可以使用它。

标签: java jsp


【解决方案1】:

没有办法:

<%@ include file="banner.jsp" %>

在 java 中,因为 - 你可以读到 here 这是一个静态 jsp 包含,它是在 JSP 编译时完成的, 我希望java中包含静态代码这样的东西。

【讨论】:

    【解决方案2】:

    在 Servlet 中你可以调用:

    RequestDispatcher rd = request.getRequestDispatcher("include.jsp");
    rd.include(request, response); 
    

    【讨论】:

      【解决方案3】:

      您可以在 servlet(或任何有权访问当前请求的类)中通过RequestDispatcher

      request.getRequestDispatcher("/banner.jsp").include(request, response);
      

      请注意,您应该很少需要这样做。这意味着您正在从 servlet 输出视图内容,您应该主要在 jsp 中执行此操作。

      【讨论】:

      • 没错,但请注意,这不是最佳做法。在一个 servlet 中包含其他 servlet 是有意义的,但是在一个 servlet 中包含一个 JSP 就没有什么意义了。您宁愿将请求/响应转发给 JSP,而该 JSP 又包含其他 JSP。
      • @BalusC - 我刚刚添加了那个注释。
      • @BalusC 和@Bozho:我发现当我使用forward() 而不是include() 时,生成的jsp 页面会丢失客户端原始请求的上下文,如果我尝试使用该请求jsp页面中的对象来构造绝对url,我得到jsp页面的url而不是客户端请求的。前段时间,我在构建一个“mail-this-link-to-a-friend”功能时遇到了这个问题。
      • @Asaph:还有其他方法。
      • @BalusC:最好的方法是什么?
      猜你喜欢
      • 2017-02-04
      • 2023-03-12
      • 2015-02-23
      • 1970-01-01
      • 2018-03-02
      • 2017-10-25
      • 2016-02-19
      相关资源
      最近更新 更多