栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

J2EE 09.JSP自定义标签01

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

J2EE 09.JSP自定义标签01

1. 标签语言特点 
<开始标签 属性="属性值">标签体 空标签



<开始标签>
<开始标签/>
2. 自定义标签的开发及使用步骤(浏览器使用:google/firefox) 
2.1 创建一个标签助手类(继承BodyTagSupport)
   标签属性必须与助手类的属性对应、且要提供对应get/set方法
   rtexprvalue 2.2 创建标签库描述文件(tld),添加自定义标签的配置
   注:tld文件必须保存到WEB-INF目录或其子目录
   jstl标签库 2.3 在JSP通过taglib指令导入标签库,并通过指定后缀访问自定义标签
index.jsp 
<%@page import="java.util.List"%>
<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="z"  uri="/zking"%>
    <%@taglib prefix="T277" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here


<% 
List lst= Arrays.asList(new String[]{"zs","ls","ww"});

//page->request->session->application
request.setAttribute("lst", lst);
request.setAttribute("name", "xq");
%> 

${n }

1.制定应test标签
T277
123
123
1231
123
123
21
 mytag.tld



	
	1.0
	
	1.2
	
	z
	
	/zking

	
		
		test
		
		com.zking.jspTag.Tag.TestTag
		
		jsp
		
		
			
			name
			
			true
			
			true
		
	
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 热加载
TestTag.java 
package com.zking.jspTag.Tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;


public class TestTag extends BodyTagSupport {

	private Object name;

	private int count = 0;

	public Object getName() {
		return name;
	}

	public void setName(Object name) {
		this.name = name;
	}

	
	@Override
	public int doStartTag() throws JspException {
		System.out.println("name=" + this.name);
		System.out.println("doStartTag():表示<开始标签>所对应的执行的动作");
		return EVAL_BODY_INCLUDE;
	}

	
	@Override
	public int doAfterBody() throws JspException {
		System.out.println("doAfterBody:介于<开始标签>标签与之间所执行的动作");
		if (count < 3) {
			count++;

			return EVAL_BODY_AGAIN;
		}
		// 相当于终止 不然会一直加载循环
		return SKIP_BODY;
	}

	
	@Override
	public int doEndTag() throws JspException {
		System.out.println("ddoEndTag():表示<结束标签>所对应的执行的动作 ");
		return EVAL_BODY_INCLUDE;
	}

}
SKIP_BODY:跳过主体
EVAL_BODY_INCLUDE:计算标签主体内容并[输出]
EVAL_PAGE:计算页面的后续部分
SKIP_PAGE:跳过页面的后续部分
EVAL_BODY_AGAIN:再计算主体一次
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号