该例注意实现对不同集合的迭代
看例子
第一步:编写标签处理器类
public class ForeachTag2 extends SimpleTagSupport {
private Object items;
private String var;
//把所有的集合和数组转换成单列集合
private Collection collection;
public void setVar(String var) {
this.var = var;
}
public void setCollection(Collection collection) {
this.collection = collection;
}
public void setItems(Object items) {
this.items = items;
if(items==null)
collection=null;
//双列集合
if(items instanceof Collection)
{
collection=(Collection) items;
}
//单列集合
if(items instanceof Map){
Map map=(Map)items;
collection=map.entrySet();
}
//数组 不能用instanceof 因为如果是基本数据类型就会报错
if(items.getClass().isArray()){
this.collection=new ArrayList();
int len=Array.getLength(items);
for(int i=0;i<len;i++)
this.collection.add(Array.get(items, i));
}
}
public void doTag() throws JspException, IOException {
if( collection==null) return;
Iterator it=collection.iterator();
while(it.hasNext()){
Object value=it.next();
this.getJspContext().setAttribute(var, value);
this.getJspBody().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>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://www.liyong.foreach1tag</uri>
<tag>
<tag>
<name>foreach2</name>
<tag-class>com.liyong.foreach.ForeachTag2</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
第三步:编写jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.liyong.foreach1tag" prefix="foreach"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'foreach1.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body> <br>
<foreach:foreach2 items="${list}" var="str">
${str }<br/>
</foreach:foreach2>
______map_____<br>
<%
Map map=new HashMap();
map.put("aa","111");
map.put("bb","222");
map.put("cc","333");
request.setAttribute("map",map);
%>
<foreach:foreach2 items="${map}" var="entry">
${entry.key } :${entry.value }<br/>
</foreach:foreach2>
______Integer_____<br>
<%
Integer num[]={new Integer(1),new Integer(2),new Integer(3),new Integer(4)};
request.setAttribute("num",num);
%>
<foreach:foreach2 items="${num}" var="i">
${i }<br/>
</foreach:foreach2>
______String_____<br>
<%
String strs[]={"sss","mmm"};
request.setAttribute("strs",strs);
%>
<foreach:foreach2 items="${strs}" var="str">
${str }<br/>
</foreach:foreach2>
______int_____<br>
<%
int num2[]={11,22,33,44};
request.setAttribute("num2",num2);
%>
<foreach:foreach2 items="${num2}" var="i">
${i }
</foreach:foreach2>
</body>
</html>
第四步:测试...
分享到:
相关推荐
#### 二、自定义迭代标签的基本概念 在JSP中,迭代标签用于遍历集合或其他可迭代对象,如数组或列表等。自定义迭代标签可以帮助开发者更好地控制迭代过程中的行为,提供更灵活的使用方式。在实现自定义迭代标签时,...
在Java服务器页面(JSP)开发中,自定义标签(Custom Tags)是扩展JSP功能的一种强大工具。它们允许开发者创建可重用的组件,这些组件可以像HTML标签一样在页面上使用,从而提高代码的可读性和可维护性。本实例主要...
以上四个标签是JSP开发中非常基础且实用的标签,它们极大地简化了代码编写,并提高了代码的可维护性。在实际项目中,通常会结合使用这些标签和其他JSTL(JavaServer Pages Standard Tag Library)标签来构建复杂的...
在JSP页面中,Java标签库扮演着至关重要的角色,它允许开发者使用预先定义好的标签执行各种操作,例如数据输出、流程控制、迭代处理以及异常处理等。 JSP自带的核心标签库中,包含了许多用于简化Web开发的标签。...
其中,JSP标签是JSP的重要组成部分,提供了丰富的功能,包括调用JavaBeans组件、处理用户请求等,有效地降低了开发的复杂性和维护成本。JSP标签库(Tag Library)则允许开发者自定义标签,扩展JSP的功能,类似于XML...
通过理解并熟练运用JSP标准标签库中的C标签库,开发者可以更高效地编写JSP页面,提升开发效率,并保持代码的整洁和可读性。在实际项目中,结合EL和其他JSTL库,如fmt、sql、xml等,可以实现更复杂的业务逻辑处理。
2. **迭代标签**: 遍历集合并多次输出内容,如foreach标签。 3. **身体标签**: 包含一个或多个动态生成的JSP片段作为其内容,如。 **自定义标签的使用** 在JSP页面中,可以通过`<jsp:taglib>`指令引入自定义标签库...
理解并熟练使用JSP标签能够极大地提高开发效率,使代码更加清晰和模块化。通过合理运用JSTL、自定义标签和JSP动作标签,可以创建出易于维护和扩展的JSP应用。在实际开发中,应根据需求选择合适的标签类型,以实现...
2. **实现标签处理类(Tag Handler)**:每个自定义标签对应一个Java类,该类需要实现`javax.servlet.jsp.tagext.Tag`或其子接口,如`SimpleTag`。在这个类中,我们可以编写处理标签逻辑的代码。 3. **在JSP页面中...
总结起来,学习和熟练使用JSP的简单标签是Web开发中必不可少的步骤,它可以帮助开发者快速构建动态网页,同时保持代码的清晰和整洁。通过深入理解内置标签的功能,以及如何创建和使用自定义标签,可以提升JSP编程的...
7. **JavaServer Pages Standard Tag Library (JSTL)**:一套标准标签库,提供用于处理常见任务的标签,如XML处理、条件语句、迭代等,以减少脚本代码。 8. **自定义标签**:开发者可以根据需求创建自己的标签库,...
在Java Web开发中,JSP(JavaServer Pages)标准标签库(JSTL)是用于增强JSP页面可读性和可维护性的重要工具。JSP标准标签库是Java社区过程(JCP)的一个成果,它将常见的JSP操作封装成了标签,使得开发者可以通过...
使用JSTL标签库能够提高JSP页面的可读性和维护性,避免在JSP页面中嵌入大量的Java代码,同时也可以利用JSTL提供的国际化标签库(i18n)进行本地化开发。 在JSTL的早期版本中,由于标签库的资源定位是通过硬编码的...
例如,我们可以创建一个迭代标签,用于遍历集合并打印每个元素。标签处理类会实现`javax.servlet.jsp.tagext.TagSupport`接口,定义属性(如集合)和处理方法。 **标签库描述(TLD)** TLD文件是自定义标签库的元...
JSP 标准标签库(JavaServer Pages Standard Tag Library,简称 JSTL)是官方推荐的一套标签库,它提供了多种常用的功能,如条件判断、迭代、XML处理等。例如,`<c:if>` 和 `<c:forEach>` 分别用于条件判断和循环,...
【JSP程序与企业网站开发】 JSP(JavaServer Pages)是Java平台上的一个用于构建动态网页的技术,它允许开发者将HTML、CSS、JavaScript等前端语言与Java代码结合,实现服务器端的数据处理和业务逻辑。JSP在企业网站...
JSTL是一个标准的、开源的JSP标签库,由Apache软件基金会的Tomcat项目开发维护。它提供了用于处理常见任务的标签,如迭代、条件判断、XML处理、国际化以及数据库操作等。JSTL的核心库主要包含了用于执行控制流(如if...
- JSTL是一组标准标签库,提供包括迭代、条件判断、XML处理等功能,减少对脚本的依赖,使代码更清晰。 5. **JSP与Servlet的关系** - JSP本质是Servlet的简化版本,JSP文件在服务器端会被转换成Servlet。 - 当JSP...
JSP开发技术中的JSTL(JavaServer Pages Standard Tag Library)是一个强大的标签库,它提供了许多预定义的标签,使得开发者能更方便地处理常见任务,如迭代、条件判断、异常处理、输入验证等,从而提高了代码的...
自定义标签为JSP页面带来了极大的灵活性和可扩展性,不仅提升了开发效率,还提高了代码的可维护性和可读性。通过理解标签库的作用和标签继承体系,我们可以更好地设计和利用自定义标签来优化我们的Web应用程序。