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

jsp标签01

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

jsp标签01

目录

一、标签语言特点

标签结构

分类

二、自定义标签的开发及使用步骤

步骤

案例1

三、标签的生命周期

返回值

标签开发场景

四、案例

z:if标签

z:set与z:out标签


一、标签语言特点

标签结构

<开始标签 属性="属性值">标签体

分类

空标签 例如:br、hr

ui标签:没有标签体也能在网页中输出内容的标签,称为UI标签

控制标签 例如:if、foreach

数据标签 例如:set、out标签

二、自定义标签的开发及使用步骤

步骤

按住Ctrl点击c:if标签,可以连接跳到c.tld文件中,而.tld文件即使c标签库的定义配置文件

继承BodyTagSupport(助手类)

注意:tld必须保存到WEB-INF目录或其子目录

jsp通过taglib指令导入标签库

案例1

c:if换成z:if

把所有c.tld 复制一份新建的文件,然后只留下一个tag标签




    
  JSTL 1.1 core library
  JSTL core
  1.1
  z
  http://jsp.veryedu.cn

  
    
        Provides core validation features for JSTL tags.
    
    
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    
  

  
  
    demo1
    
    com.maomao.tag.DemoTag
    
    JSP
    
    
        var
        
        false
        
        false
    
  
  
  
    if
    com.maomao.tag.IfTag
    JSP
    
        test
        true
        true
    
  
  

package com.maomao.tag;

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


public class IfTag extends BodyTagSupport{
	
		private boolean test;
		
		public boolean isTest() {
			return test;
		}

		public void setTest(boolean test) {
			this.test = test;
		}


		@Override
		public int doStartTag() throws JspException {
//			如果不满足条件,就不输出标签体->dostarttag的返回值skip_body
//			需要获取到是否满足条件的结果集,那么该标签就有一个属性,属性值是boolean
			return test?EVAL_BODY_INCLUDE:SKIP_BODY;
		}
}

三、标签的生命周期

返回值

SKIP_BODY:跳过主体

EVAL_BODY_INCLUDE:计算标签主体内容并输出

EVAL_BODY_AGAIN:再计算主体一次

EVAL_PAGE:计算页面的后续部分

SKIP_PAGE:跳过页面的后续部分

标签开发场景

doStartTag()-------------------------->doEndTag()

doStartTag()-------------------------->doAfterBody------------------------------->doEndTag()

doStartTag()-------------------------->doAfterBody(循环)----------------------->doEngTag()

package com.maomao.tag;

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


public class DemoTag extends BodyTagSupport{
	@Override
	public int doStartTag() throws JspException {
		System.out.println("------------------doStartTag-------------------");
		return EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doAfterBody() throws JspException {
		System.out.println("------------------doAfterBody-------------------");
//		return EVAL_BODY_AGAIN;
		return super.doAfterBody();
//		return SKIP_PAGE;
	}
	
	@Override
	public int doEndTag() throws JspException {
		System.out.println("------------------doEndTag-------------------");
//		return super.doEndTag();
		return SKIP_PAGE;
	}
}

四、案例

z:if标签
package com.maomao.tag;

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


public class IfTag extends BodyTagSupport{
	
		private boolean test;
		
		public boolean isTest() {
			return test;
		}

		public void setTest(boolean test) {
			this.test = test;
		}


		@Override
		public int doStartTag() throws JspException {
//			如果不满足条件,就不输出标签体->dostarttag的返回值skip_body
//			需要获取到是否满足条件的结果集,那么该标签就有一个属性,属性值是boolean
			return test?EVAL_BODY_INCLUDE:SKIP_BODY;
		}
}

z:set与z:out标签

z:set

package com.maomao.tag;

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


public class SetTag extends BodyTagSupport{

	private String var;
	private Object value;
	
	public String getVar() {
		return var;
	}

	public void setVar(String var) {
		this.var = var;
	}

	public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}


	@Override
	public int doStartTag() throws JspException {
//		要存储数据,一键值对的方式存储,分析得来,该标签有2个属性
		pageContext.setAttribute(var, value);
		return super.doStartTag();
	}
}

z:out

package com.maomao.tag;

import java.io.IOException;

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


public class OutTag extends BodyTagSupport{
	
	private Object value;

	public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}
	
	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(value);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}
	

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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