实现自定义标签

JSTL 让我们java代码在jsp中更直观,有时候我们需要自己实现标签。本文用一个简单的例子来说明如何实现自定义标签。

step1 编写java类继承 SimpleTagSupport 并在doTag方法中添加处理逻辑 

step2 配置标签说明文件

step3 在页面使用标签


准备工作:创建一个web project ,将tomcat lib下的jsp-api.jar和servlet-api.jar两个jar包导入项目中去。

现想自定义一个标签 用于在页面上显示某个字符串及次数

1.创建HelloTag.java 

package com.qiang.web.jstl;

import java.io.IOException;

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


public class HelloTag extends SimpleTagSupport{
	private String str;
	private int count;
	@Override
    public void doTag()throws JspException, IOException{
		PageContext cxt =  (PageContext) getJspContext();
		JspWriter out = cxt.getOut();
		for (int i = 0; i < count; i++) {
			out.println(str+"<br/>");
		}
		
	}
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}

}
该类继承 SimpleTagSupport 并重写 doTag()方法 。在页面上显示count次str

2.添加myTag.tld文件


 在web-inf下添加myTag.tld 文件,格式参考c.tld 用来说明标签有哪些属性和一些自定义名称。

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

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <tlib-version>1.2</tlib-version>
  <short-name>c3</short-name>
  <uri>http://jstl.web.qiang.com/myTag</uri>
  <tag>
    <description>根据指定的次数打印文本.</description>
    <name>pt</name>
    <tag-class>com.qiang.web.jstl.HelloTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <description>Content</description>
        <name>str</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <description>Count</description>
        <name>count</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>

</taglib>

节点说明:

short-name :自定义的prefix

uri:自定义的URI

name:自定义标签名称

attribute:对应类的变量属性

3.使用标签

此时标签以定义好,在webRoot下添加myTag.jsp

<%@ page language="java"  import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.qiang.web.jstl.*" %>
<%@ taglib prefix="c3" uri="http://jstl.web.qiang.com/myTag" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>标签 jsp</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
  </head>
  
  <body>
	 	<c3:pt count="10" str="Hello world"></c3:pt>
  </body>
</html>
使用该标签

<%@ taglib prefix="c3" uri="http://jstl.web.qiang.com/myTag" %>

引用自定义标签prefix和uri

<c3:pt count="10" str="Hello world"></c3:pt>

使用pt标签 count和str对应配置文件和java类的count和str属性。

运行tomca并在浏览器输入对应的jsp路径


页面显示10测jello world。自定义标签成功!








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值