15.6.1 标签
标签用于包含其他Web资源,它与指令的作用有些类似。标签与标签的区别在于,前者不仅可以包含同一个Web应用中的资源,还能包含其他Web应用中的资源,甚至是其他网站的资源。
标签的基本语法形式为:
<c:importurl="Web资源的URL"/>
在test.jsp文件中可以按如下方式包含其他JSP文件。
(1)包含当前helloapp应用中的target.jsp文件,url属性为相对于当前test.jsp文件的相对路径:
<c:importurl="dir2/target.jsp"/>
(2)包含当前helloapp应用中的target.jsp文件,url属性为以"/"开头的绝对路径:
<c:importurl="/dir1/dir2/target.jsp"/>
(3)包含JavaThinker网站中的index.jsp文件,url属性为以"http://"开头的绝对路径:
<c:importurl="http://www.javathinker.org/index.jsp"/>
helloapp应用与helloapp1应用位于同一个Servlet容器内,helloapp应用中的test.jsp可以按照如下步骤包含helloapp1应用中的target.jsp。
(1)修改helloapp应用的META-INF/context.xml文件,把元素的crossContext属性设为true,使得helloapp应用具有访问同一个Servlet容器内的其他Web应用的权限。本书第5章的5.8节(访问Servlet容器内的其他Web应用)介绍了crossContext属性的作用。
<Contextreloadable="true"crossContext="true"/>
(2)在test.jsp文件中通过以下标签包含helloapp1应用中的target.jsp:
<c:importurl="/dir1/dir2/target.jsp"context=/helloapp1"/>
以上context属性设定helloapp1应用的根路径,url属性设定target.jsp文件在helloapp1应用中的绝对路径。
在标签中还可以通过var属性设定一个String类型的命名变量。如果设定了var属性,那么标签不会把url属性设定的目标文件的内容直接包含到当前文件中,而是把目标文件中的文本内容保存在var属性设定的命名变量中。例如以下标签把target.jsp文件中的文本内容存放在target命名变量中,${target}输出target.jsp文件中的文本内容:
<c:importurl="dir2/target.jsp"var="target"/>
${target}