使用 Java 包含 JSP 文件
Posted
技术标签:
【中文标题】使用 Java 包含 JSP 文件【英文标题】:Include JSP file with Java 【发布时间】:2011-08-03 06:04:14 【问题描述】:我知道在 jsp 中包含和外部文件可以通过以下方式完成:
<%@ include file="banner.jsp" %>
但是有没有办法在 java 类/对象中做到这一点?
【问题讨论】:
你想在java clsas中包含jsp ????????????? @Jigar Joshi:包含来自 Servlet 的 jsp 视图是完全合理的做法。 @Jigar:通常我会嘲笑你那些问号,但在这种情况下,我觉得你是有道理的:) 请注意,@include
不能包含外部文件。该文件必须位于相同的网络内容中才能正常工作。
进一步@BalusC 的评论,来自JSTL 的<c:import>
能够包含外部文件,因此您可以使用它。
【参考方案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:最好的方法是什么?以上是关于使用 Java 包含 JSP 文件的主要内容,如果未能解决你的问题,请参考以下文章
JSP中的include(静态包含文件)在包含html文件时,乱码问题的解决方法。
JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象