JavaWeb课程系列

4.6 jsp标签

4.7.1概述

1)JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。

2)Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现。

3)JSP规范中定义了一些标准的Action元素,这些元素的标签名都以jsp作为前缀,并且全部采用小写,例如,<jsp:include>、<jsp:forward>等等。

4.7.2       <jsp:include>标签

1)<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。

2)语法:

<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

○page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。

○flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。

3)<jsp:include>标签与include指令的比较

○@include指令在翻译“主体”代码时起作用。相当于把“被包含”的JSP代码复制到“主体”JSP文件中,生成一个合并之后的Servlet源文件,所以二者在代码中不能使用相同的变量名等——凡是放在一起会冲突的内容都不被允许。

○<jsp:include>标签会被翻译为JspRuntimeLibrary类的include()方法,“被包含”的JSP页面会单独翻译、编译;每次“主体”JSP被请求时,都会先执行“被包含”的JSP,将执行结果合并到HTML代码中,一起发送到浏览器端。所以使用<jsp:include>标签时,“被包含”的JSP中的代码不会和“主体”JSP冲突。

○对比

 

@include指令

<jsp:include>标签

特点

静态包含

动态包含

语法的基本形式

<%@ include file=”…”%>

<jsp:include page=”…”/>

包含动作发生的时机

翻译期间

请求期间

生成Servlet源文件

一个

多个

合并方式

代码复制

合并运行结果

包含的内容

文件实际内容

页面输出结果

代码冲突

有可能

不可能

被包含页面中可否设置影响主页面的响应报头

可以

不可以

○举例

[1]创建三个JSP页面结构如下

[2]编辑main.jsp

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

         <br />

<jsp:include page="partTwo.jsp"></jsp:include>

[3]编辑partOne.jsp

<%="I am part one!" %>

[4]编辑partTwo.jsp

<%="I am part two!" %>

[5]运行main.jsp

[6]翻译和编译的结果

[7] main_jsp.java中的内容

out.write("<!DOCTYPE……>\r\n");

out.write("<html>\r\n");

out.write("<head>\r\n");

out.write("<meta ……">\r\n");

out.write("<title>Insert title here</title>\r\n");

out.write("</head>\r\n");

out.write("<body>\r\n");

out.write("\r\n");

out.write("\t");

out.print("I am part one!" );

out.write("\r\n");

out.write("\t<br />\r\n");

out.write("\t");

org.apache.jasper.runtime.JspRuntimeLibrary

.include(request, response, "partTwo.jsp", out, false);

out.write("\r\n");

out.write("\r\n");

out.write("</body>\r\n");

out.write("</html>");

[8] partTwo_jsp.java中的内容

out.print("I am part two!" );

 

4.7.3       <jsp:forward>标签

1)<jsp:forward>标签用于把请求转发给另外一个资源

2)语法:

<jsp:forward page="relativeURL|<%=expression%>" />

page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

4.7.4       <jsp:param>标签

 1)当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给的资源是一个能动态执行的程序时,例如Servlet和JSP页面,那么,还可以使用<jsp:param>标签向这个程序传递请求参数。

语法1:

<jsp:include page="relativeURL | <%=expression%>">

<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />

</jsp:include>

语法2:

<jsp:forward page="relativeURL | <%=expression%>">

<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />

</jsp:include>

 2)<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。