JSP自定义标签——访问标签/访问标签体(即标签内容)

本文介绍如何使用Java实现自定义JSP标签,包括创建标签类、定义.tld文件及在JSP页面中使用该标签的方法。通过示例展示了空标签体与带标签体两种不同场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立web项目

一、.java

package com.li.tag;

import java.io.IOException;
import java.io.StringWriter;

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

public class HelloTag extends SimpleTagSupport {

	StringWriter sw = new StringWriter();

	@Override
	public void doTag() throws JspException, IOException {

		// 创建Hello标签
		JspWriter out = getJspContext().getOut();
		out.println("eg:Hello Custom Tag!");

		// 访问标签体
		getJspBody().invoke(sw);
		getJspContext().getOut().println(sw.toString());

	}
}

二、.tld(新建方法自行查看:tld新建)

<?xml version="1.0" encoding="UTF-8"?>
<j2ee:taglib version="2.0" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
	xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://xmlns.jcp.org/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ">
	<j2ee:tlib-version>0.0</j2ee:tlib-version>
	<j2ee:short-name>NMTOKEN</j2ee:short-name>

<!-- 1. 访问标签 body-content:empty -->
		<!-- <tlib-version>1.0</tlib-version>
		<jsp-version>2.0</jsp-version>
		<short-name>Example TLD</short-name>
		<tag>
			<name>Hello</name>
			<tag-class>com.li.tag.HelloTag</tag-class>
			<body-content>empty</body-content>
		</tag> -->
		
<!--2. 访问标标签体 body-content:scriptless(访问标签体同时可访问标签) -->	
		<tlib-version>1.0</tlib-version>
		<jsp-version>2.0</jsp-version>
		<short-name>Example TLD with Body</short-name>
		<tag>
			<name>Hello</name>
			<tag-class>com.li.tag.HelloTag</tag-class>
			<body-content>scriptless</body-content>
		</tag>

</j2ee:taglib>


三、页面展示:.jsp

<%@ page language="java" isELIgnored="false" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="ex" uri="WEB-INF/helloTag.tld"%>

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
.aaaa{width:200px; height: 100px}
</style>
</head>
<body>

	<!--1. 访问标签 -->
	<ex:Hello/>

	<!--2. 访问标签及标签体 -->
	<ex:Hello>
	 eg:I am fine, thank you.
	</ex:Hello>

</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值