JSP简单标签带属性开发
1、开发带属性的标签,标签处理器类中属性要有相应setter方法,符合javaBean规范
2、tld文件中进行相应属性标签配置
属性配置相关说明如下图
3、简单标签带属性的例子
1)、通过设置标签属性,自定义循环标签体次数;基本数据类型,JSP页面传递字符串时可以自动转换成相应类型,复合数据类型就不能自动转换,如Date
![](/assets/blank.gif)
![](/assets/blank.gif)
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);}} }
带属性的自定义简单标签
![](/assets/blank.gif)
![](/assets/blank.gif)
<?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文件
![](/assets/blank.gif)
![](/assets/blank.gif)
<%@ 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
![](/assets/blank.gif)
![](/assets/blank.gif)
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属性自定义标签处理器类
![](/assets/blank.gif)
![](/assets/blank.gif)
<?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文件
![](/assets/blank.gif)
![](/assets/blank.gif)
<%@ 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简单标签带属性开发相关推荐
- JSP简单标签的开发
1. 新建RepeatSampleTag类,代码如下: package bid.zhazhapan.fims.tag;import java.io.IOException; import java.i ...
- javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- javaweb学习总结—jsp简单标签标签库开发
一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...
- 基于Golang的简单web服务程序开发——CloudGo
基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...
- SpringBoot2.x集成Apache Shiro并完成简单的Case开发
SpringBoot集成Apache Shiro环境快速搭建 在上文 Apache Shiro权限框架理论介绍 中,我们介绍了Apache Shiro的基础理论知识.本文我们将在 SpringBoot ...
- python命令窗口在哪里_详解如何在cmd命令窗口中搭建简单的python开发环境
详解如何在cmd命令窗口中搭建简单的python开发环境 1.快捷键win+r输入cmd回车调出cmd界面,在命令行输入python回车,显示python命令无法识别 2.登陆python官网http ...
- Unity简单2D游戏开发
Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...
- HTML初步认识和一些简单常用属性
HTML的初步认识和一些简单常用属性 1.什么是HTML? HTML是描述网页的一种语言 HTML 指的是超文本标记语言 (Hyper Text Markup Language) 页面内包含的内容不仅 ...
- JSP在电子商务网站开发的运用应用发展方向
JSP在电子商务网站开发的运用应用发展方向 2009-05-06 来自:java060515 [收藏到我的网摘] JSP 在开发电子商务网站中将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设 ...
最新文章
- Arthas 实践——生产环境排查 CPU 飚高问题
- 吞吐量达到瓶颈后下降_中港协:八大枢纽港集装箱吞吐量增速创新高
- day21.模块和包
- vb设计一个由计算机,计算机VB程序的设计第一章.ppt
- BUG! exception in phase semantic analysis in source unit
- 尚硅谷k8s安装文档_Kubernetes(k8s)中文文档 从零开始k8s_Kubernetes中文社区
- 《江南》、乌镇、《似水年华》
- cocos2d-x性能优化的那些事
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨0.41%
- Java:基于LinkedList实现栈和队列
- 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
- 程序员修炼之道 读书笔记2
- 华为安装gsm框架_华为手机怎么安装 GMS 框架和谷歌应用?
- R语言缺失值判断与处理mice包-3
- [免费配音软件]语音合成,让阿里云小姐姐为你的视频配音
- 计算机用户全部删除,电脑用户怎么删除:批量删除计算机用户方法
- Java毕业设计:人民医院体检预约系统(java+springboot+vue+mysql)
- 设计自制编程语言Monkey编译器:使用普拉特解析法解析复杂的算术表达式
- 读数据库版本的、利用K-means聚类方法做经纬度聚合
- offiice2013全套软件,加破击工具,教程,真是验证过链接:https://pan.baidu.com/s/1Csv4ZXDQyK_cKfpIXwwn6Q 提取码:h7dp 复制这段内容后打
热门文章
- 面试官扎心一问:知道 CopyOnWriteArrayList 吗?
- 还在用Swagger生成接口文档?我推荐你试试它.....
- 写出我的第一个框架:迷你版Spring MVC
- Mybatis:颠覆你心中对事务的理解
- 数据库分库分表,何时分?怎样分?
- NLP新秀prompt跨界出圈,清华刘知远最新论文将它应用到VLM图像端
- 送40本书,人人有份!
- 美国多所高校宣称9月线下开学,纽约大学教授:请停止妄想!
- 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
- 获清华特奖又上“最强大脑”!这位90后学神去一线抗疫的理由是……