扩展名为.tag的文本文件,其结构几乎和jsp文件相同。
tag文件存放在/WEB_INF/tags文件夹下,再此文件夹下可以创建子目录和tag文件
<%@ taglib tagdir="路径" prefix="别名"%>
如果直接调用的话,直接在某个位置写一下代码,就可以直接调用
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="add"%>
Tag test
how to use Tag
//调用add.tag文件
标记体
tag指令类似于jsp文件中的page指令。tag文件通过使用tag指令可以指定某些属性的值,便从整体上影响tag文件的处理和表示。
body-content language(当前只能是java) import(导入相应要用到的包) pageEncoding(页面编码)
pagecontent属性
通过属性的值来决定是否是允许有标记体,或者标记体的类型
<%@ tag body-content="scriptless" language="java" pageEncoding="ISO-8859-1" %>
tag文件充当着可复用代码的角色,如果一个tag文件允许使用他的jsp文件来参数,就使得jsp功能更加强大,使用attribute来传递数据
其中变量声明的格式如下:
<%@ attribute name="对象名字" required="true"|"false" type="对象的类型"%>
name是必须的指定指定变量的名字。type是指定变量的类型,例如:java.util.Date,默认为java.lang.String类型
<%@ tag body-content="scriptless" language="java" pageEncoding="UTF-8" %>
<%@ tag import="java.lang.String" %>
<%@ attribute name="stuname" type="java.lang.String" %>
<%@ attribute name="stuage" type="java.lang.Integer" %>
<%
//接受页面传过来的数据
String myname=stuname;
int myage=stuage;
%>
<%=myname%> <%=myage%>
test.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="add"%>
Tag test
how to use Tag
姓名 年龄
通过variable指令可以实现从tag向jsp页面传递数据
<%@ variable name-given="对象名字" variable-class="对象的类型" scope="有效的范围"%>
variable-class写类型的时候要带包名:java.lang.Integer/java.lang.Double.....
scope有效的范围是指定对象的有效范围,可以取的值为:AT_BEGIN AT_NESTED AT_END
对象的返回
tag文件为了给jsp返回一个对象,就必须将对象的名字以及该对象的引用存储到tomcat的内置对象jspContext中,tag文件只有将对象内知道jspContext中jsp中才能够使用对象。
<%@ tag import="java.util.Date"%>
<%@ variable name-given="time" variable-class="java.util.Date" scope="AT_END"%>
<%
jspContext.setAttribute("time",new Date());
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="add"%>
Tag test
how to use Tag
当前时间<%=time%>