J2EE&JSP自定义标签库01&out标签&if标签

目录

一.什么是标签

二.JSP自定义标签库

[2.1 JSP标签库是什么](#2.1 JSP标签库是什么)

[2.2 处理流程](#2.2 处理流程)

[2.3 如何自定义标签](#2.3 如何自定义标签)

[2.4 标签类型](#2.4 标签类型)

三.开发示例

[3.1 out标签](#3.1 out标签)

1.创建助手类

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

3.在页面使用

4.将项目部署运行,即可可到效果

[3.2 if标签](#3.2 if标签)

1.创建助手类

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

3.在页面使用


一.什么是标签

标记语言,是一种注释文本的语言,以便于计算机可以操作。很多与"ML"结尾的语言都是标记语言,比如:HTML,XML,XHTML,VML等等。

标记语言与其他语言一样,也需要运行它们的环境,比如HTML的运行环境时浏览器,XML也要自己的解析和运行的环境。

基本结构:

<开始标签>标签体</结束标签>

空标签:

<开始标签 属性名="属性值"/></结束标签>

<br/><br/>

<开始标签 属性名="属性值"/>

二.JSP自定义标签库

2.1 JSP标签库是什么

是一个JSP标签集合,它封装了JSP应用的通用核心功能, 基于JSP标签我们可以理解为,是JSP应该通用功能的一种封装方式

2.2 处理流程

2.3 如何自定义标签

常见自定义标签主要步骤:

  • 编写助手类
  • 编写标签库描述文件(tld)
  • 在页面上引入标签使用

2.4 标签类型

  1. UI标签, 输出页面元素
  2. 控制标签, 如if标签,foreach标签等
  3. 数据标签,用于向页面输入数据

三.开发示例

3.1 out标签

1.创建助手类

java 复制代码
public class OutTag extends BodyTagSupport {

	private String val;

	public String getVal() {
		return val;
	}

	public void setVal(String val) {
		this.val = val;
	}

	// 默认值
	private String defaultVal;

	public String getDefaultVal() {
		return defaultVal;
	}

	public void setDefaultVal(String defaultVal) {
		this.defaultVal = defaultVal;
	}

	@Override
	public int doStartTag() {
		//pageContext为页面上下文对象,用于和jsp共享数据
		JspWriter out = this.pageContext.getOut();
		try {
			if (this.val == null || "".equals(this.getVal())) {
				//利用JspWrite对象将val输出到页面
				out.print(this.getDefaultVal());
			}else {
				//利用JspWrite对象将val输出到页面
				out.print(this.val);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		return SKIP_BODY;
	}

}

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

java 复制代码
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>Simple Tags</short-name>
	<uri>/zking</uri>

	<tag>
		<!-- 标签名 -->
		    <name>out</name>
		<!-- 标签助手类 -->
		    <tag-class>com.zking.tagdemo.tag</tag-class>
		<!-- 标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 -->
		    <body-content>empty</body-content>
	<attribute>
		<!-- 属性名, OutTag类中的val属性相匹配 -->
		    <name>val</name>
		<!-- 表示该属性为必要的属性 -->
		    <required>true</required>
		<!-- 该属性可以接受EL表示式的值 -->
		    <rtexprvalue>true</rtexprvalue>
		<!-- 标签描述,用于说明标签的作用 -->
		    <description>out标签val属性,用于输出val的值</description>
	</attribute>

	<attribute>
		<!-- 属性名, OutTag类中的val属性相匹配 -->
		    <name>defaultVal</name>
		<!-- 表示该属性为必要的属性 -->
		    <required>false</required>
		<!-- 该属性可以接受EL表示式的值 -->
		    <rtexprvalue>false</rtexprvalue>
		<!-- 标签描述,用于说明标签的作用 -->
		    <description>out标签defaultVal属性,用于输出defaultVal的值</description>
	</attribute>
		
	</tag>
	
</taglib>

3.在页面使用

java 复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<z:out val="abc"/>
</body>
</html>

4.将项目部署运行,即可可到效果

3.2 if标签

1.创建助手类

java 复制代码
public class IfTag extends BodyTagSupport{

	private boolean test = false;

	public boolean isTest() {
		return test;
	}

	public void setTest(boolean test) {
		this.test = test;
	}
	
	@Override
	public int doStartTag() {
		if(this.test) {
			return EVAL_BODY_INCLUDE;
		}
		
		return SKIP_BODY;
		
	}
}

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

java 复制代码
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>Simple Tags</short-name>
	<uri>/zking</uri>

	
	<tag>
			<!-- 标签名 -->
		<name>if</name>
			<!-- 标签助手类 -->
		<tag-class>com.zking.tagdemo.tag.IfTag</tag-class>
			<!-- 标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 -->
		<body-content>jsp</body-content>
	
	<attribute>
			<!-- 属性名, OutTag类中的val属性相匹配 -->
		<name>test</name>
			<!-- 表示该属性为必要的属性 -->
		<required>true</required>
			<!-- 该属性可以接受EL表示式的值 -->
		<rtexprvalue>true</rtexprvalue>
			<!-- 标签描述,用于说明标签的作用 -->
		<description>out标签test属性,用于输出test的值</description>
	</attribute>
	
	
	
	
	</tag>
	
</taglib>

3.在页面使用

java 复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	

	<z:if test="${100==100 }">
		测试if(100 == 100)
	</z:if>



</body>
</html>
相关推荐
张张张31212 分钟前
4.2学习总结 Java:list系列集合
java·学习
KATA~15 分钟前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
xyliiiiiL30 分钟前
一文总结常见项目排查
java·服务器·数据库
shaoing32 分钟前
MySQL 错误 报错:Table ‘performance_schema.session_variables’ Doesn’t Exist
java·开发语言·数据库
腥臭腐朽的日子熠熠生辉1 小时前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian1 小时前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之1 小时前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码2 小时前
Spring Task 定时任务
java·前端·spring
俏布斯2 小时前
算法日常记录
java·算法·leetcode
27669582922 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿