目录
简介
1. 标签语言特点
<开始标签 属性="属性值">标签体</结束标签>空标签
<br/><hr/>
<开始标签></结束标签>
<开始标签/>
2. 自定义标签的开发及使用步骤
2.1 创建一个标签助手类(继承BodyTagSupport)
标签属性必须与助手类的属性对应、且要提供对应get/set方法
rtexprvalue2.2 创建标签库描述文件(tld),添加自定义标签的配置
注:tld文件必须保存到WEB-INF目录或其子目录
jstl标签库2.3 在JSP通过taglib指令导入标签库,并通过指定后缀访问自定义标签
3. 标签生命周期
流程A:
SKIP_BODY
3.1 实例化标签助手类->doStartTag()------------->doEndTag()
//主要用开发简单标签流程B:
EVAL_BODY_INCLUDE SKIP_BODY
3.2 实例化标签助手类->doStartTag()------------->doAfterBody---------------->doEndTag()...
EVAL_BODY_AGAIN
3.3 .....
jrebal 热加载SKIP_BODY:跳过主体
EVAL_BODY_INCLUDE:计算标签主体内容并[输出]
EVAL_PAGE:计算页面的后续部分
SKIP_PAGE:跳过页面的后续部分
EVAL_BODY_AGAIN:再计算主体一次
自定义out输出标签、if条件标签、forEach循环标签(控制标签)
自定义deptList数据标签,select标签
作用域 page(当前页面) request(一次请求) session (一次会话) application(当前应用程序)
例题
建包
index.java
<%@page import="KTDM.Dept"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="/zking" prefix="z" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% List list=new ArrayList(); list.add("菜菜"); list.add("果果"); list.add("馅饼"); list.add("航子"); list.add("桃紫"); String name="菜菜子"; List<Dept> deptList = new ArrayList<Dept>(); deptList.add(new Dept(1,"财务部")); deptList.add(new Dept(2,"教学部")); deptList.add(new Dept(3,"就业部")); deptList.add(new Dept(4,"教质部")); request.setAttribute("name", name); request.setAttribute("list", list); request.setAttribute("deptList", deptList); %> <!-- 自定义out标签 --> <c:out value="${name}"></c:out> <z:out value="${name}"></z:out> <div></div> <!-- 自定义if标签 --> <c:if test="${'菜菜子' eq name}"> 果果是傻呗 </c:if> <z:if test="${'菜菜子' eq name}"> 果果是傻呗 </z:if> <div></div> <!-- 自定义foreach标签 --> <c:forEach items="${list}" var="n" varStatus="vs"> ${n},${vs.index},${vs.count} </c:forEach> <div></div> <z:foreach items="${list}" var="n" varStatus="vs"> ${n},${vs.index},${vs.count} </z:foreach> <!-- 自定义select标签 --> <select name="" style="width:200px"> <option >----