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
[3]编辑partOne.jsp
[4]编辑partTwo.jsp
[5]运行main.jsp [6]翻译和编译的结果 [7] main_jsp.java中的内容
[8] partTwo_jsp.java中的内容
|
|||||
|
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>标签来传递多个参数。