- 浏览: 547466 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (740)
- css (4)
- jquery (8)
- javascript (23)
- html (0)
- uml (0)
- 设计模式 (1)
- 开发工具 (14)
- json (4)
- struts 1.x (3)
- spring (3)
- hibernate (6)
- struts 2.x (17)
- JFreechart (0)
- j2se (48)
- jsp (9)
- flex (22)
- 找工作 (1)
- 技术杂谈 (18)
- 网络编程 (5)
- io流 (1)
- ORACLE (15)
- 报表 (3)
- extjs (11)
- jpbm (2)
- swing (5)
- jspereports (3)
- sql (1)
- linux (15)
- ps (1)
- storm (4)
- hbase (8)
- li (0)
- python (1)
- hive (3)
- 机器学习 (1)
- hdfs (1)
- elasticsearch (1)
- hadoop 2.2 (5)
- hadoop (1)
最新评论
-
Tristan_S:
这个有点意思
ASM -
starryskydog:
程序修改detail band部分的样式 如内容字体大小 ...
使用jasperReport实现动态表头 -
samwong:
Good, so usefule
使用YUI Compressor压缩CSS/JS -
gc715409742:
能够告诉我怎么在web项目中使用YUI Compressor? ...
使用YUI Compressor压缩CSS/JS -
JsonTeye:
您好! 我看你的代码,我现在也在做动态报表,实现功能由用户自己 ...
使用jasperreport动态生成pdf,excel,html
开发一个迭代标签,此标签只可以对list进行迭代(学习)。
IterateTag.java:
- package com.keith.tag;
- import java.util.Iterator;
- import java.util.List;
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.PageContext;
- import javax.servlet.jsp.tagext.TagSupport;
- public class IterateTag extends TagSupport {
- // 属性名称
- private String name;
- // 属性保存范围
- private String scope;
- // 每次迭代的对象
- private String id;
- // 所以接受到的数据
- private Iterator<?> iter;
- @Override
- public int doStartTag() throws JspException {
- Object value = null;
- // 是否是page范围
- if ("page".equals(this.scope)) {
- value = super.pageContext
- .getAttribute(name, PageContext.PAGE_SCOPE);
- } else if ("request".equals(this.scope)) {
- // 是否是request范围
- value = super.pageContext.getAttribute(name,
- PageContext.REQUEST_SCOPE);
- } else if ("session".equals(this.scope)) {
- // 是否是session范围
- value = super.pageContext.getAttribute(name,
- PageContext.SESSION_SCOPE);
- } else {
- // 是否是application范围
- value = super.pageContext.getAttribute(name,
- PageContext.APPLICATION_SCOPE);
- }
- //如果是List接口的实例
- if (value != null && value instanceof List<?>) {
- //像List接口进行向下转型
- this.iter = ((List<?>) value).iterator();
- if (iter.hasNext()) {
- super.pageContext.setAttribute(id, iter.next());
- //执行标签体内容
- return TagSupport.EVAL_BODY_INCLUDE;
- }else{
- //退出标签执行
- return TagSupport.SKIP_BODY;
- }
- } else {
- //不是List接口实例,不处理
- //退出标签执行
- return TagSupport.SKIP_BODY;
- }
- }
- @Override
- public int doAfterBody() throws JspException {
- //判断是否还有内容
- if (iter.hasNext()) {
- super.pageContext.setAttribute(id, iter.next());
- //重复执行标签体
- return TagSupport.EVAL_BODY_AGAIN;
- }else{
- //退出标签执行
- return TagSupport.SKIP_BODY;
- }
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getScope() {
- return scope;
- }
- public void setScope(String scope) {
- this.scope = scope;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public Iterator<?> getIter() {
- return iter;
- }
- public void setIter(Iterator<?> iter) {
- this.iter = iter;
- }
- }
package com.keith.tag; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.TagSupport; public class IterateTag extends TagSupport { // 属性名称 private String name; // 属性保存范围 private String scope; // 每次迭代的对象 private String id; // 所以接受到的数据 private Iterator<?> iter; @Override public int doStartTag() throws JspException { Object value = null; // 是否是page范围 if ("page".equals(this.scope)) { value = super.pageContext .getAttribute(name, PageContext.PAGE_SCOPE); } else if ("request".equals(this.scope)) { // 是否是request范围 value = super.pageContext.getAttribute(name, PageContext.REQUEST_SCOPE); } else if ("session".equals(this.scope)) { // 是否是session范围 value = super.pageContext.getAttribute(name, PageContext.SESSION_SCOPE); } else { // 是否是application范围 value = super.pageContext.getAttribute(name, PageContext.APPLICATION_SCOPE); } //如果是List接口的实例 if (value != null && value instanceof List<?>) { //像List接口进行向下转型 this.iter = ((List<?>) value).iterator(); if (iter.hasNext()) { super.pageContext.setAttribute(id, iter.next()); //执行标签体内容 return TagSupport.EVAL_BODY_INCLUDE; }else{ //退出标签执行 return TagSupport.SKIP_BODY; } } else { //不是List接口实例,不处理 //退出标签执行 return TagSupport.SKIP_BODY; } } @Override public int doAfterBody() throws JspException { //判断是否还有内容 if (iter.hasNext()) { super.pageContext.setAttribute(id, iter.next()); //重复执行标签体 return TagSupport.EVAL_BODY_AGAIN; }else{ //退出标签执行 return TagSupport.SKIP_BODY; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getScope() { return scope; } public void setScope(String scope) { this.scope = scope; } public String getId() { return id; } public void setId(String id) { this.id = id; } public Iterator<?> getIter() { return iter; } public void setIter(Iterator<?> iter) { this.iter = iter; } }
iteratetag.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.0</tlib-version>
- <!-- 为标签苦在TLD中的描述名称 -->
- <short-name>iteratetag</short-name>
- <tag>
- <!-- 表示标签在JSP中的使用名称 -->
- <name>iterate</name>
- <!-- 表示这个标签所这项的Class -->
- <tag-class>com.keith.tag.IterateTag</tag-class>
- <!-- 标签体内容为空 -->
- <body-content>JSP</body-content>
- <attribute>
- <!-- format为属性名 -->
- <name>id</name>
- <!-- 表示此值必须设置 -->
- <required>true</required>
- <!-- 表示属性值是请求时表达式的结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <!-- format为属性名 -->
- <name>name</name>
- <!-- 表示此值必须设置 -->
- <required>true</required>
- <!-- 表示属性值是请求时表达式的结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <!-- format为属性名 -->
- <name>scope</name>
- <!-- 表示此值必须设置 -->
- <required>true</required>
- <!-- 表示属性值是请求时表达式的结果 -->
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
<?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.0</tlib-version> <!-- 为标签苦在TLD中的描述名称 --> <short-name>iteratetag</short-name> <tag> <!-- 表示标签在JSP中的使用名称 --> <name>iterate</name> <!-- 表示这个标签所这项的Class --> <tag-class>com.keith.tag.IterateTag</tag-class> <!-- 标签体内容为空 --> <body-content>JSP</body-content> <attribute> <!-- format为属性名 --> <name>id</name> <!-- 表示此值必须设置 --> <required>true</required> <!-- 表示属性值是请求时表达式的结果 --> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <!-- format为属性名 --> <name>name</name> <!-- 表示此值必须设置 --> <required>true</required> <!-- 表示属性值是请求时表达式的结果 --> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <!-- format为属性名 --> <name>scope</name> <!-- 表示此值必须设置 --> <required>true</required> <!-- 表示属性值是请求时表达式的结果 --> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
web.xml:
- <taglib>
- <taglib-uri>iterate</taglib-uri>
- <taglib-location>/WEB-INF/iteratetag.tld</taglib-location>
- </taglib>
<taglib> <taglib-uri>iterate</taglib-uri> <taglib-location>/WEB-INF/iteratetag.tld</taglib-location> </taglib>
index.jsp:
- <%@ page import="java.util.*" %>
- <%@ taglib prefix="iteratetag" uri="iterate"%>
- <body>
- <%
- List<String> all = new ArrayList<String>();
- all.add("java");
- all.add("linux");
- all.add("C");
- request.setAttribute("all",all);
- %>
- <iteratetag:iterate name="all" scope="request" id="url">
- ${url }<br />
- </iteratetag:iterate>
- </body>
发表评论
-
http协议详解ppt
2012-01-02 12:15 1274HTTP是hypertext transferprot ... -
TagSupport类的生命周期
2011-12-23 16:13 864TagSupport类的生命周期 ... -
JSP自定义标签学习
2011-12-23 11:43 716自定义标签的最大的特点:利用 自定义标签,软件开发人员和页 ... -
java中几种获取项目路径方式
2011-11-04 09:06 2051Java代码 在jsp和c ... -
web.xml中"web-app_2_5.xsd"引起的EL表达式无效异常
2011-10-17 14:44 1098web.xml中"web-app_2_5.xsd ... -
JSP自定义标签(tag)、如何使用自定义标签库、几种典型的标签、标签库接口和类的继承关系(第三天)
2011-10-17 11:10 823JSP自定义标签(tag) 什么是自定义标签? 1,用 ... -
Tomcat:IOException while loading persisted sessions
2010-08-15 15:43 862Tomcat:IOException while loadin ... -
JSP中文乱码
2010-08-01 19:10 1066JSP中文乱码 1,最基本的乱码问题。 这个乱码问题是最简单 ...
相关推荐
### JSP自定义迭代标签详解 #### 一、引言 在JSP(JavaServer Pages)开发中,自定义标签可以极大地提高代码的复用性和可维护性。特别是在处理循环迭代逻辑时,自定义迭代标签能够使页面逻辑更加清晰、简洁。本文...
为了提高代码的可读性和可维护性,JSP引入了标签库,其中包括了通用标签和迭代标签。这些标签使得开发者能够以更加简洁的方式处理常见的编程任务,如数据输出、变量设置和循环。以下是关于`<c:forEach>`、`<c:out>`...
- **Tag接口**:是传统标签必须实现的经典接口,它有一个直接子接口`IterationTag`,用于开发迭代标签。 - **TagSupport类**:是`IterationTag`的一个实现类,通过继承`TagSupport`,开发者可以方便地开发出迭代标签...
`Tag`接口的直接子接口`IterationTag`是用于开发迭代标签的,如`for-each`,并且有一个默认实现类`TagSupport`。另一个子接口`BodyTag`允许标签包含内容体,`BodyTagSupport`是它的实现类,适用于需要处理内容体的...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 标准标签...
在Java服务器页面(JSP)开发中,自定义标签(Custom Tags)是扩展JSP功能的一种强大工具。它们允许开发者创建可重用的组件,这些组件可以像HTML标签一样在页面上使用,从而提高代码的可读性和可维护性。本实例主要...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 标准标签...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 ...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 标准标签...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 ...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 ...
12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 标准标签...
【Web开发常用标签详解】 在Web开发中,熟练掌握各种标签是构建高效、易维护的网页的关键。这里我们将深入探讨Struts框架中的五个主要标签库,重点讲解Bean Tags、HTML Tags和Logic Tags。 1. Bean Tags: Bean ...
在IT行业中,标签打印机的开发是一项重要的任务,特别是在自动化、物流、零售等领域有着广泛的应用。本文将基于"标签打印机开发包"的标题和描述,详细阐述相关知识点。 首先,"BPLADLL.dll"是这个开发包的核心组件...
在IT领域,迭代是一个非常重要的概念,尤其在软件开发过程中,它不仅涉及算法的设计,还广泛应用于各种编程语言中数据结构的操作。本文将基于给定的信息,深入探讨迭代方法,特别是针对JSP(JavaServer Pages)环境...
Struts2作为一款流行的Java Web框架,提供了丰富的标签库来简化视图层的开发,使得在JSP页面中处理数据变得更加便捷。在这个场景下,我们关注的是如何在Struts2中迭代Map和List对象。这两种数据结构在Web开发中经常...
`Tag`是所有标签接口的基础,而`SimpleTag`接口提供了一个更简单的处理模型,适用于不涉及迭代或嵌套标签的情况。 **标签的类型**有四种基本形式: 1. **空标签**:如 `<hello/>` 2. **带有属性的空标签**:如 `...
标题"matlab开发-使用PCA和迭代canyedge的ahybridskinlesionsegmenttool"提到了几个关键概念。首先,"matlab开发"表明这是一个基于MATLAB编程环境的项目,MATLAB是一款强大的数学计算软件,常用于数据分析、算法开发...
在MATLAB开发中,"迭代nTHPowerRootImageEqualization"是一种高级的图像处理技术,主要应用于图像增强和均衡化。这个技术的核心是通过迭代计算,对图像的像素值进行非线性变换,以改善图像的整体对比度和亮度分布。...
在JSF 1.2中,我们经常需要处理数据的迭代和展示,这通常通过使用特定的组件或标签来实现。JSF(JavaServer Faces)是一个用于构建用户界面的Java框架,它允许开发者使用声明式的方式处理用户交互和数据绑定。在给定...