JSP 请求转发和包含
- 由于 JSP 也是基于 Java Servlet 实现的,所以在JSP文件进行请求转发和包含,可以通过通过隐含对象 application(相当于 Servlet 中的 ServletContext 对象) 的RequestDispatcher对象,通过调用其 include 和 forward 实现;
- 同时 JSP 本身也提供了一系列的标签来更加简便地实现这两个功能;
JSP 请求转发
主要的方法有2种:
1)使用<jsp:forward>动作标签
<jsp:forward>动作把请求转到另外的页面,改标签可以添加在 JSP 的任意位置,同 Servlet 一样,当JSP编译阶段时编译该标签时,忽略原来页面的所有响应正文,直接将请求转移到指定页面,这一点用 Servlet 的 RequestDispatcher.forward()是一样的;
<%--忽略本JSP文件的所有响应正文,直接将请求跳转到路径为"/target.jsp"的文件--%>
<jsp:forward page="target.jsp" />
2)通过隐含对象 application
<% application.getRequestDispatcher("/target.jsp").forward(request,response); %>
JSP 包含
主要由3种方法:1)使用<%@ include %>包含指令
使用包含指令,指定的文件会在本 JSP 加载之前就进行加载,并包含到本JSP文件的最开始部分;
<%--在加载本JSP之前,导入一个路径为"/header.jsp"的文件到本JSP文件头部,该文件描述一些开头部分的html元素 --%>
<%@ include file="/header.jsp" %>
2)使用<jsp:include>动作标签
使用该动作标签,在JSP文件的任意位置包含一段指定的JSP文件;
<%--在接下去的代码之前,导入一个路径为"/commentBox.jsp"的JSP文件,该文件描述一个嵌入的评论框 --%>
<jsp:include page="/commentBox.jsp" flush="true"/>
3)通过隐含对象 application
<% application.getRequestDispatcher("/commentBox.jsp").include(request,response); %>