include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的文件紧密结合为一个Servlet。这些文件可以是JSP页面、HTML页面、文本文件或是一段Java代码。
说明:
1.file属性指定被包含的文件,不支持任何表达式,例如下面的错误用法:
<% String f =“top.html” %>
<%@ include file = “<%= f%>” %>
2.不可以在file所指定的文件后接任何参数,如下用法也是错误的:
<%@ include file = "top.jsp?name=zyf"%>
3.如果file属性值以“/”开头,将在当前应用程序的根目录下查找文件;如果是以文件名或文件夹名开头,将在当前页面所在的目录下查找文件。
JSP动作的通用格式如下:
<jsp:动作名 属性1="属性值1"…属性n="属性值n"/>
或者:
<jsp:动作名 属性1="属性值1"…属性n="属性值n">相关内容</jsp:动作名>
JSP中常用的动作包括<jsp:include>、<jsp:param>、<jsp:forward>、<jsp:plugin>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>。
<jsp:include>动作标记用于把另外一个文件的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入,这样主页面程序与被包含文件是彼此独立的,互不影响。被包含的文件可以是一个动态文件(JSP文件),也可以是一个静态文件(如文本文件)。
<jsp:include page="relativeURL | <%= expression%>"/>
<jsp:include>动作和前面讲解的include指令作用类似,现将它们之间的差异总结如下:
1.属性不同
include指令通过file属性来指定被包含的页面,该属性不支持任何表达式。
<jsp:include>动作是通过page属性来指定被包含的页面,该属性支持JSP表达式。
2.处理方式不同
使用include指令被包含的文件,它的内容会原封不动地插入到包含页中使用该指令的位置,然后JSP编译器再对这个合成的文件进行翻译。所以最终编译后的文件只有一个。
使用<jsp:include>动作包含文件时,只有当该标记被执行时,程序才会将请求转发到被包含的页面,再将其执行结果输出到浏览器中,然后重新返回到包含页来继续执行后面的代码。
3.包含方式不同
include指令的包含过程为静态包含<jsp:include>动作的包含过程为动态包含,通常被用来包含那些经常需要改动的文件。
4.对被包含文件的约定不同
使用include指令包含文件时,对被包含文件有约定,如:被包含的文件中不能使用“<html></html>”,“<body></body>”标记;被包含文件要避免变量和方法在命名上与主文件的冲突问题。
param动作标记
当使用<jsp:include>动作标记引入的是一个能动态执行的程序时,例如Servlet或JSP页面,那么,可以通过使用<jsp:param>动作标记向这个程序传递参数信息。
param动作标记
其语法格式如下:
<jsp:includepage="relativeURL| <%=expression%>">
<jsp:paramname="pName1" value="pValue1 | <%= expression1 %>"/>
<jsp:paramname="pName2" value="pValue2 | <%= expression2 %>"/>
……
</jsp:include>
forward动作标记
其语法格式如下:
<jsp:forwardpage="relativeURL"|"<%=expression %>"/>