1、开发带属性的标签,标签处理器类中属性要有相应setter方法,符合javaBean规范

2、tld文件中进行相应属性标签配置

属性配置相关说明如下图

3、简单标签带属性的例子

1)、通过设置标签属性,自定义循环标签体次数;基本数据类型,JSP页面传递字符串时可以自动转换成相应类型,复合数据类型就不能自动转换,如Date

package TagDemo;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;public class SimpleTagWithAttrDemo extends SimpleTagSupport {private int count;public void setCount(int count) {this.count = count;}@Overridepublic void doTag() throws JspException, IOException {JspFragment fragment = this.getJspBody();for (int i = 0; i < this.count; i++) {fragment.invoke(null);}}
}

带属性的自定义简单标签

<?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>自定义标签</description><tlib-version>1.0</tlib-version><short-name>SDT</short-name><uri>/sefDefineTag</uri><tag><name>tagDemo</name><tag-class>TagDemo.TagDemo</tag-class><body-content>JSP</body-content></tag><tag><description>测试循环</description><name>iteration</name><tag-class>TagDemo.IterationTagDemo</tag-class><body-content>JSP</body-content></tag><tag><description>测试修改标签体内容</description><name>bodytag</name><tag-class>TagDemo.BodyTagDemo</tag-class><body-content>JSP</body-content></tag><tag><name>simpleTag</name><tag-class>TagDemo.SimpleTagDemo</tag-class><!--简单标签中,body-content中一般设置成empty或scriptless,如果设置成JSP会抛异常;传统标签中,body-content中一般设置成empty或JSP;如果body-content设置成tagdependent,那么标签体里的内容是给标签处理类使用的,例如:标签体里的SQL语句,就可以设置成tagdependent,标签处理器类得到SQL语句处理--><body-content>scriptless</body-content></tag><tag><name>simpleIterationTag</name><tag-class>TagDemo.SimpleIterationTagDemo</tag-class><body-content>scriptless</body-content></tag><tag><name>simpleBodyTag</name><tag-class>TagDemo.SimpleBodyTagDemo</tag-class><body-content>scriptless</body-content></tag><tag><name>simpleEndPageTag</name><tag-class>TagDemo.SimpleEndPageTagDemo</tag-class><body-content>empty</body-content></tag><tag><name>simpleTagAttr</name><tag-class>TagDemo.SimpleTagWithAttrDemo</tag-class><body-content>scriptless</body-content><attribute><description>标签处理器类count属性值</description><name>count</name><required>true</required><!--rtexprvalue用来指示属性值是否可以是一个表达式--><rtexprvalue>true</rtexprvalue></attribute></tag>
</taglib>

tld文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="sdt" uri="/sefDefineTag" %>
<html>
<head><title></title>
</head>
<body>
<h1>下面是自定义标签:</h1>
<h6>---------------------------------------------</h6><sdt:tagDemo><%="java代码"%>标签体</sdt:tagDemo>
<br/>
<br/>
<sdt:iteration>循环标签体5次<br/></sdt:iteration>
<br/>
<br/>
<sdt:bodytag>abc</sdt:bodytag>
<br/>
<br/>
<sdt:simpleTag>简单标签体</sdt:simpleTag>
<br/>
<br/>
<sdt:simpleIterationTag>简单标签体循环5次<br/></sdt:simpleIterationTag>
<br/>
<br/>
<sdt:simpleBodyTag>abccde</sdt:simpleBodyTag>
<br/>
<br/>
<%--<sdt:simpleEndPageTag></sdt:simpleEndPageTag>--%>
<br/>
<br/>
<!--tld文件标签属性rtexprvalue为true时,属性表达式写法嵌套java代码如,count="<%=2+3%>"-->
<sdt:simpleTagAttr count="5">属性标签体循环<br/></sdt:simpleTagAttr>
<h6>---------------------------------------------</h6><div><h1>自定义标签下面内容</h1>
</div>
</body>
</html>

JSPDemo

2)、标签属性是复合数据类型Date

package TagDemo;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleTagWithAttrDemo2 extends SimpleTagSupport {private Date date;public void setDate(Date date) {this.date = date;}@Overridepublic void doTag() throws JspException, IOException {PageContext pageContext = (PageContext) this.getJspContext();DateFormat format=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");pageContext.getOut().write(format.format(date));}
}

Date属性自定义标签处理器类

<?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>自定义标签</description><tlib-version>1.0</tlib-version><short-name>SDT</short-name><uri>/sefDefineTag</uri><tag><name>tagDemo</name><tag-class>TagDemo.TagDemo</tag-class><body-content>JSP</body-content></tag><tag><description>测试循环</description><name>iteration</name><tag-class>TagDemo.IterationTagDemo</tag-class><body-content>JSP</body-content></tag><tag><description>测试修改标签体内容</description><name>bodytag</name><tag-class>TagDemo.BodyTagDemo</tag-class><body-content>JSP</body-content></tag><tag><name>simpleTag</name><tag-class>TagDemo.SimpleTagDemo</tag-class><!--简单标签中,body-content中一般设置成empty或scriptless,如果设置成JSP会抛异常;传统标签中,body-content中一般设置成empty或JSP;如果body-content设置成tagdependent,那么标签体里的内容是给标签处理类使用的,例如:标签体里的SQL语句,就可以设置成tagdependent,标签处理器类得到SQL语句处理--><body-content>scriptless</body-content></tag><tag><name>simpleIterationTag</name><tag-class>TagDemo.SimpleIterationTagDemo</tag-class><body-content>scriptless</body-content></tag><tag><name>simpleBodyTag</name><tag-class>TagDemo.SimpleBodyTagDemo</tag-class><body-content>scriptless</body-content></tag><tag><name>simpleEndPageTag</name><tag-class>TagDemo.SimpleEndPageTagDemo</tag-class><body-content>empty</body-content></tag><tag><name>simpleTagAttr</name><tag-class>TagDemo.SimpleTagWithAttrDemo</tag-class><body-content>scriptless</body-content><attribute><description>标签处理器类count属性值</description><name>count</name><required>true</required><!--rtexprvalue用来指示属性值是否可以是一个表达式--><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>simpleTagAttr2</name><tag-class>TagDemo.SimpleTagWithAttrDemo2</tag-class><body-content>scriptless</body-content><attribute><name>date</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag>
</taglib>

tld文件

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="sdt" uri="/sefDefineTag" %>
<html>
<head><title></title>
</head>
<body>
<h1>下面是自定义标签:</h1>
<h6>---------------------------------------------</h6><sdt:tagDemo><%="java代码"%>标签体</sdt:tagDemo>
<br/>
<br/>
<sdt:iteration>循环标签体5次<br/></sdt:iteration>
<br/>
<br/>
<sdt:bodytag>abc</sdt:bodytag>
<br/>
<br/>
<sdt:simpleTag>简单标签体</sdt:simpleTag>
<br/>
<br/>
<sdt:simpleIterationTag>简单标签体循环5次<br/></sdt:simpleIterationTag>
<br/>
<br/>
<sdt:simpleBodyTag>abccde</sdt:simpleBodyTag>
<br/>
<br/>
<%--<sdt:simpleEndPageTag></sdt:simpleEndPageTag>--%>
<br/>
<br/>
<!--tld文件标签属性rtexprvalue为true时,属性表达式写法嵌套java代码如,count="<%=2+3%>"-->
<sdt:simpleTagAttr count="5">属性标签体循环<br/></sdt:simpleTagAttr>
<br/>
<br/>
<%Date now = new Date();request.setAttribute("date", now);
%>
<sdt:simpleTagAttr2 date="${date}"></sdt:simpleTagAttr2>
<br/>
<%--或者这样写:--%>
<sdt:simpleTagAttr2 date="<%=new Date()%>"></sdt:simpleTagAttr2>
<h6>---------------------------------------------</h6><div><h1>自定义标签下面内容</h1>
</div>
</body>
</html>

JSPDemo

JSP简单标签带属性开发相关推荐

  1. JSP简单标签的开发

    1. 新建RepeatSampleTag类,代码如下: package bid.zhazhapan.fims.tag;import java.io.IOException; import java.i ...

  2. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  3. javaweb学习总结—jsp简单标签标签库开发

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  4. 基于Golang的简单web服务程序开发——CloudGo

    基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...

  5. SpringBoot2.x集成Apache Shiro并完成简单的Case开发

    SpringBoot集成Apache Shiro环境快速搭建 在上文 Apache Shiro权限框架理论介绍 中,我们介绍了Apache Shiro的基础理论知识.本文我们将在 SpringBoot ...

  6. python命令窗口在哪里_详解如何在cmd命令窗口中搭建简单的python开发环境

    详解如何在cmd命令窗口中搭建简单的python开发环境 1.快捷键win+r输入cmd回车调出cmd界面,在命令行输入python回车,显示python命令无法识别 2.登陆python官网http ...

  7. Unity简单2D游戏开发

    Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...

  8. HTML初步认识和一些简单常用属性

    HTML的初步认识和一些简单常用属性 1.什么是HTML? HTML是描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) 页面内包含的内容不仅 ...

  9. JSP在电子商务网站开发的运用应用发展方向

    JSP在电子商务网站开发的运用应用发展方向 2009-05-06 来自:java060515  [收藏到我的网摘] JSP 在开发电子商务网站中将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设 ...

最新文章

  1. Arthas 实践——生产环境排查 CPU 飚高问题
  2. 吞吐量达到瓶颈后下降_中港协:八大枢纽港集装箱吞吐量增速创新高
  3. day21.模块和包
  4. vb设计一个由计算机,计算机VB程序的设计第一章.ppt
  5. BUG! exception in phase semantic analysis in source unit
  6. 尚硅谷k8s安装文档_Kubernetes(k8s)中文文档 从零开始k8s_Kubernetes中文社区
  7. 《江南》、乌镇、《似水年华》
  8. cocos2d-x性能优化的那些事
  9. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.41%
  10. Java:基于LinkedList实现栈和队列
  11. 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
  12. 程序员修炼之道 读书笔记2
  13. 华为安装gsm框架_华为手机怎么安装 GMS 框架和谷歌应用?
  14. R语言缺失值判断与处理mice包-3
  15. [免费配音软件]语音合成,让阿里云小姐姐为你的视频配音
  16. 计算机用户全部删除,电脑用户怎么删除:批量删除计算机用户方法
  17. Java毕业设计:人民医院体检预约系统(java+springboot+vue+mysql)
  18. 设计自制编程语言Monkey编译器:使用普拉特解析法解析复杂的算术表达式
  19. 读数据库版本的、利用K-means聚类方法做经纬度聚合
  20. offiice2013全套软件,加破击工具,教程,真是验证过链接:https://pan.baidu.com/s/1Csv4ZXDQyK_cKfpIXwwn6Q 提取码:h7dp 复制这段内容后打

热门文章

  1. 面试官扎心一问:知道 CopyOnWriteArrayList 吗?
  2. 还在用Swagger生成接口文档?我推荐你试试它.....
  3. 写出我的第一个框架:迷你版Spring MVC
  4. Mybatis:颠覆你心中对事务的理解
  5. 数据库分库分表,何时分?怎样分?
  6. NLP新秀prompt跨界出圈,清华刘知远最新论文将它应用到VLM图像端
  7. 送40本书,人人有份!
  8. 美国多所高校宣称9月线下开学,纽约大学教授:请停止妄想!
  9. 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
  10. 获清华特奖又上“最强大脑”!这位90后学神去一线抗疫的理由是……