JSP标签

本文详细介绍了JSP自定义标签的特点、开发步骤、生命周期和常见应用,包括if、set、out、foreach等标签的使用,并提供了实例及测试方法,帮助读者掌握JSP标签的实践操作。
摘要由CSDN通过智能技术生成

前言:给大家讲解JSP标签

码字不易,点个关注

转载请说明!

开发工具:eclipse


思维导图:


目录

1.标签语言的特点

2.自定义标签的步骤

3.生命周期

 3.1标签开发场景 

3.2返回值

4.实例 

需要导的包

 标签库描述文件

4.1 if标签

4.2 set标签与out标签

4.3 foreach标签

4.4 select标签

4.5 测试 (写一个jsp界面)


1.标签语言的特点

1.形式:<开始标签 属性="属性值">标签体</结束标签>

2.分类(冒号后面是相关例子):

①.空标签: br、hr

②.ui标签:input、table

③.控制标签:if、foreach

④.数据标签:set标签、out标签

2.自定义标签的步骤

1.助手类(继承BodyTagSupport)

2.标签库描述文件(tld);(tld文件必须保存到WEB-INF目录或其子目录)

3.JSP通过taglib指令导入标签库

标签库描述文件

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    
  <description>hpw 1.1 core library</description>
  <display-name>hpw core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>hpw</short-name>
  <uri>http://jsp.veryedu.cn</uri>

<tag>
    <name>opp</name>
    <tag-class>com.hpw.tag.IfTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
       <!--  自定义标签的成员变量名称 -->
        <name>test1</name>
        <!-- 该成员变量是否必传 -->
        <required>true</required>
        <!-- 是否支持El表达式 -->
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
</taglib>

4.JSP通过taglib指令导入标签库

<%@taglib prefix="pw" uri="http://jsp.veryedu.cn" %>
<body>
    <pw:Dome1>dome1</pw:Dome1>
</body>

3.生命周期

 3.1标签开发场景 

 1.doStartTag...skipBody...doEndTag
 2.doStartTag...EVAL_BODY_INCLUDE...doAfterBody...EVAL_PAGE...doEndTag
 3.doStartTag...EVAL_BODY_INCLUDE...doAfterBody...EVAL_BODY_AGAIN... doAfterBody...EV  AL_BODY_AGAIN(N次)...doEndTag 

3.2返回值

SKIP_BODY:跳过主体

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

EVAL_BODY_AGAIN:再计算主体一次

EVAL_PAGE:计算页面的后续部分

SKIP_PAGE:跳过页面的后续部分

​
public class Dome1 extends BodyTagSupport {
	
	@Override
	public int doStartTag() throws JspException {
		System.out.println("Demo1_doStartTag进来了");
		return SKIP_BODY;
	}
	
	
	@Override
	public int doEndTag() throws JspException {
		System.out.println("Demo1_doEndTag进来了");
		return super.doEndTag();
	}
}

public class Dome2 extends BodyTagSupport{

	@Override
	public int doStartTag() throws JspException {
		System.out.println("Dome1_doStartTag进来了");
  //		return super.doStartTag();
		return EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doAfterBody() throws JspException {
        System.out.println("Dome2_doAfterBody进来了");
		return EVAL_PAGE;
	}
	
	@Override
	public int doEndTag() throws JspException {
		System.out.println("Dome3_doEndTag进来了");
		return super.doEndTag();
	}
}

public class Dome3 extends BodyTagSupport{

	@Override
	public int doStartTag() throws JspException {
		System.out.println("Dome3_doStartTag进来了");
  //		return super.doStartTag();
		return EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doAfterBody() throws JspException {
        System.out.println("Dome3_doAfterBody进来了");
		return EVAL_BODY_AGAIN;
	}
	
	@Override
	public int doEndTag() throws JspException {
		System.out.println("Dome3_doEndTag进来了");
		return super.doEndTag();
	}
	
}

​

4.实例 

需要导的包

 标签库描述文件

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
	version="2.0">

	<description>hpw 1.1 core library</description>
	<display-name>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值