所谓标记库(tag library),是指由在JSP页面中使用的标记所组成的库。
JSP容器推出时带有一个小型的、默认的标记库。
当JSP 标准标记库(Standard Tag Library,JSTL)还未满足到项目需要时,就要自已封装自己的taglib
而自定义标记库是人们为了某种特定的用途或者目的,
将一些标记放到一起而形成的一种库。
tag文件是以tag为后缀名的文本文件。作为自定义的标记库,除了jsp页面指令外,其他JSP元素都可以出现在tag文件中
页面引用格式
<%@ taglib prefix=“ui” tagdir="/WEB-INF/tags" %>
tagdir:用于指定tag文件目录,当页面使用<ui:xxxx>
进,会查找该目录下对应的xxxx.tag文件。
prefix:指定使用时标签前缀
使用格式
<ui:xxxx></ui:xxxx>
例子:<ui:tagDemo><ui:tagDemo>
tag文件添加属性:当tag文件需要引用页面传入参数时,就需要在tag文件中填加属性。
定义属性格式
<%@ attribute name="attributename" required="true" type="com.myapp.util.ListPage" %>
name(必须):属性名
required(必须):指定是否必须传
type(可选):指定属性类型。
tag文件获得传入参数值
String attributename=(String) pageContext.getAttribute(“attributename”);
或者在jsp元素中使用${pageScope.attributename}
也可使用<jsp:doBody/>
获取引用页面标签内的body内容。
Tag文件
<%@tag pageEncoding="UTF-8" isELIgnored="false" %>
!--%@tag pageEncoding="UTF-8" isELIgnored="false" body-content="empty"%> --
<!--body-content="empty"表明使用标签时,标签内不能有内容 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="user" required="true" type="java.util.List" %>
<%@ attribute name="url" required="true"%>
<%@ attribute name="color" required="false" %>
<table width="400" cellpadding="5" bgcolor="${pageScope.color}">
<tr>
<td>
${pageScope.url} <jsp:doBody/>
</td>
</tr>
</table>
<select>
<c:forEach var="user" items="${userList }">
<option value="${user.id }" <c:if test="${user.id eq selectedVal}"> selected="selected"</c:if>>${user.name}</option>
</c:forEach>
</select>
jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=11">
<meta name="renderer" content="webkit">
<title>Insert title here</title>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%@page import="com.maniy.User"%>
</head>
<body>
<%
List<User> userList=new ArrayList<User>();
User user=new User();
user.setId(1);
user.setName("liao");
userList.add(user);
<tags:tagDemo url="tagDemo.jsp" userList="<%=userList%>" color="red">这是我传入的Body内容</tags:tagDemo>
</body>
</html>