<jsp:include>标准动作可以在一个页面中包含另一个页面,例如:
- <html>
- <body>
- <jsp:include page="Header.jsp" />
- </body>
- </html>
include指令也可以实现这种功能,例如:
- <html>
- <body>
- <%@ include file="Header.jsp" %>
- </body>
- </html>
但两者原理有所不同,<jsp:include>标准动作是动态的,在运行时发生;include指令在转换时发生,直接将内容插入页面之中
include指令和<jsp:include>标准动作都是位置敏感的
注意:
不要把开始和结束HTML和BODY标记放在可重用部件中,设计和编写可重用部件中,要假设他们会包含在其他页面中
使用<jsp:param>可以定制包含内容,例如:
- <html>
- <body>
- <jsp:include page="Header.jsp">
- <jsp:param name="subTitle" value="We take the sting out of SOAP." />
- </jsp:include>
- </body>
- </html>
- Header.jsp如下
- <img src="../xxx" />
- <br />
- ${param.subTitle}
- <br />
<jsp:forward>标准动作可以从一个jsp页面转发至其他任何资源,包括servlet,jsp等等
有条件的转发:
- <html>
- <body>
- Welcome to our page!
- <% if (request.getParameter("userName") == null) { %>
- <jsp:forward page="HandleIt.jsp" />
- <% } %>
- Hello ${param.userName}
- </body>
- </html>
注意:
利用<jsp:forward>,缓冲区会在转发之前清空,所以千万不要先刷新输出在转发
<jsp:param>也可以用在<jsp:forward>中
如果<jsp:param>中使用的参数名已经有一个值(作为请求参数),新值会覆盖原来的值,否则,就会向请求增加一个新的请求参数
对包含资源有一些限制:它不能改变响应状态码或设置首部