Tag文件是<jsp:include>替代技术,也是为了提高JSP页面中代码的模块化和重用;可以被JSP页面动态加载调用;
对于tag标签,需要掌握:tag文件的定义、tag文件的使用、如何定义tag的属性,如何定义tag文件的返回值、tag文件的嵌套调用
1、Tag文件存放位置
Tag文件存放在项目的WEB-INF/Tags目录下;用户可以在该目录下设置子目录;
2、如何在JSP页面中调用Tag文件
需要2步:
(1)使用taglib指令引入标记:
<%@ taglib tagdir="/WEB-INF/tags" prefix="前缀" %>
其中tagdir属性设置tag文件存放的位置;prefix属性设置访问把tag的前缀,目的是用于避免tag的名字冲突;
(2)在JSP页面中调用:
<Tag文件 /> <Tag文件 > 标记体 </Tag文件>
当JSP页面调用一个Tag文件时可能希望动态地向该Tag文件传递信息,那么就可以使用带有标记体的Tag标记来执行一个Tag文件,Tag标记中的“标记体”就会传递给相应的Tag文件,这个Tag文件通过使用
<jsp:doBody />
标记处理JSP页面传递过来的“标记体”。
3、tag指令常见的属性有哪些?
body-content、pageEncoding、language、import
(1)body-content:该属性用于确定JSP页面使用该Tag标记时是否可以有body;该属性的值可以设置为empt、tagdependent、JSP 、scriptless(默认值)
- empty:表示JSP页面必须使用无标记体的方式调用标签,即<Tag文件名 />
- tagdependent:标签体内容直接写入BodyContent,由自定义标签自己进行处理,而不被JSP容器解释;
<test:myList> select name.age from users </test:myList>
- JSP:接受所有JSP语法,如定制的或内部的tag、script、静态html、脚本元素、JSP指令和动作
<my:test> <%= request.getProtocol() %> </my:test>
- scriptless::接受文本、EL和JSP动作;
(2)language: 指定tag文件使用的脚本语言;
(3)import: 导入tag要使用的类,默认如下包已导入:"java.lang.*"、 "javax.servlet.*"、 "javax.servlet.jsp.*"、"javax.servlet.http.*"
(4)pageEncoding:tag文件的编码方式,默认为ISO-8859-1;
4、JSP页面如何向tag文件传递参数?
可以在tag文件中通过attribute指令设置tag需要接收的属性,这样,jsp页面可以通过设置的属性向tag文件传递参数,如果把attribute指令相当于用于定于函数的参数
<%@ attribute name="对象名“ required=”true|false“ type="对象类型" <%--tag文件中属性的定义 --%> <%@ attribute name="length" required="true" %> <%-- JSP 调用tag文件 --%> <computer:myTag length="1000" />
5、Tag文件如何向调用的JSP页面返回结果?
(1)首先在tag文件中使用variable指令定义需要返回的对象,语法如下:
<%@ variable name-given="对象名字” variable-class="对象的类型" scope=“AT_END” %>
(2)在tag文件中使用
jspContext调用setAttribute(“对象的名字”,对象的引用)方法存储对象的名字以及该对象的引用
(3)在JSP页面中调用tag文件,调用完成后可以直接使用“对象名”