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;
} @Override
public 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;
} @Override
public 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. ...

  2. 深入分析JavaWeb Item23 -- jsp自己定义标签开发入门

    一.自己定义标签的作用 自己定义标签主要用于移除Jsp页面中的java代码. 二.自己定义标签开发和使用 2.1.自己定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 要编写一 ...

  3. jsp简单标签开发(一)

    孤傲苍狼 @Override22 public void doTag() throws JspException, IOException {23 //得到代表jsp标签体的JspFragment24 ...

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

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

  5. javaweb(二十六)——jsp简单标签标签库开发(二)

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

  6. JSP简单介绍

    前言 知识点 1.JSP是什么   java  server   page,javaserver端页面技术.其主要作用在server端动态生成页面, 其组成java代码和html, 2.JSP的组成 ...

  7. 《JSP+Servlet+Tomcat应用开发从零開始学》

    当当网页面:  http://product.dangdang.com/23619990.html 内容简单介绍      本书全面介绍了 JSP开发中涉及的相关技术要点和实战技巧. 全书结构清晰,难 ...

  8. Hibernate入门2.简单的项目开发实例

    Hibernate入门2.简单的项目开发实例 这一节通过一个简单的项目学习Hibernate项目的配置 代码下载 : 链接: http://pan.baidu.com/s/1zlgjl 密码: p34 ...

  9. VS2010 简单ATL COM开发

    http://blog.csdn.net/wangwenjing90/article/details/8771934#reply http://blog.csdn.net/wangwenjing90/ ...

随机推荐

  1. jq不包含某属性

    jq解释属性选择器时有以下四种: 上面都是带某属性或者属性为某值的情况,还有一种情况是不带某属性怎么办? 答案是同属性不为某值. 如 <a b='c' class="d"&g ...

  2. 【心得】在脱离TFS的情况下,如何解除TFS绑定?

    我们知道在有TFS的情况下,在文件-源代码管理-高级中可以解除TFS绑定. 但是如果我们出差去了,拿着笔记本电脑,打开解决方案的时候,会总是提示无法连接TFS,并且在源代码管理处尝试解除的时候也提示无 ...

  3. iOS开发小技巧--即时通讯项目:消息发送框(UITextView)高度的变化; 以及UITextView光标复位的小技巧

    1.即时通讯项目中输入框(UITextView)跟随输入文字的增多,高度变化的实现 最主要的方法就是监听UITextView的文字变化的方法- (void)textViewDidChange:(UIT ...

  4. Lyaer 单弹出层获取数据

    案例完整代码如下 var cls = layer.open({                title: "请选择被换班人",                type: 2,   ...

  5. perl sub

    #/usr/bin/perl -w use strict; my $usage = "\n\nusage: $0 <length>\n\n"; my $length = ...

  6. python编程关键字

    1.常见关键字 (带有操作含义的关键字) for:循环 in:成员比较运算符 if :如果分支 elif:如果分支 else:其他分支 while:循环 def:定义函数 class:定义类 glob ...

  7. Hadoop版本变迁

    内容来自<Hadoop技术内幕:深入解析YARN架构设计与实现原理>第2章:http://book.51cto.com/art/201312/422022.htm Hadoop版本变迁 当 ...

  8. Invalid initial heap size: -Xms

    -Xxs512m注意 Xxs 和 512m中间无空格就行了.

  9. bzoj3669[Noi2014]魔法森林

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  10. DataTable是否存在某个列的判断

    使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t = new DataTable(); Dat ...