tag作用:编写调用tag实现代码复用。能防止用户直接访问tag页面。Include只能做到代码复用,但是不能防止用户在地址栏直接输入地址访问。
优点: 1.实现代码的复用
2.分离数据处理代码和数据显示代码,便于web应用的维护,和再开发
tag文件的保存:保存在WEB-INF/tags/下
tag标记:
格式一:<Tag 文件名 />
格式二:<Tag 文件名>
标记体
</Tag 文件名>
在没有标记体的情况下只能用格式一,格式二会将标记体传入tag文件中,用<jsp:doBody/>来得到这个标记体。
使用之前必须用taglib指令知名标记库(即他所调用的tag文件保存的相对路径)
格式:<%@ taglib tagdir=”相对路径” prefix=”前缀” %>
调用格式:<前缀:文件名/>
tag文件的编写:
常用指令:tag、variable、include、attribute、taglib
tag指令:
格式:<%@tag 属性1=”属性值” 属性2=”属性值”%>
常用属性: body-content
属性值: empty(tag不能带标记体)
tagdependent(tag可以带标记体,也可以不带标记体)
scriptless(tag可以带标记体,也可以不带标记体)(默认)
language(和jsp中page标记的属性一样)
import(和jsp中page标记的属性一样)
pageEncoding 指定tag文件的字符编码,默认为”ISO-8859-1”
include指令:(和在jsp中的include指令类似)
attribute指令:可以让jsp页面向tag文件传递需要的数据
格式:<%@ attribute name=”对象名” required=”ture”|”false” type=”对象的类型”%>
其中name必须有;required:如果是ture,则必须传递,如果是false,则可传可不传,默认是false;type默认是:java.lang.String类型。
使用:
格式一:<前缀:Tag文件名 对象名=”对象的引用” />
格式二:<前缀:Tag文件名 对象名=”对象的引用”>
标记体
</前缀:Tag文件名>
variable指令:可以使jsp页面动态的传递数据到tag文件中。
格式:
<%@ variable name-given=”对象名” variable-class=”对象的类型” scope=”有效范围”%>
其中name-given 必须有;variable-class默认是:java.lang.String类型;scope:AT_BEGIN(一就开始使用)AT_NESTED(只在tag标记的地方使用)AT_END(只有在JSP结束之后才使用variable)
对象的返回
使用jspContex.setAttribute(“对象的名字”,”对象的引用”);