- 浏览: 1984474 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (188)
- java基础 (22)
- 经验+注意 (39)
- Oracle (34)
- javaScript (28)
- jquery (24)
- iBatIS (11)
- hibernate (8)
- struts1.x (1)
- spring (1)
- SVN (1)
- myeclipse (12)
- jbmp工作流 (1)
- 其他 (22)
- 杂谈 (4)
- struts2 (5)
- css (4)
- 正则表达式 (2)
- jstl标签 (4)
- Java Tree (2)
- Jboss (1)
- json (1)
- HttpURLConnection (1)
- Apache commons工具包 (1)
- groovy+grails (2)
最新评论
-
q2425533:
Java字符串倒序输出 + 数组的排序 -
变脸小伙:
今天也跟着学习了,用到了
struts2拦截器 获得请求方法名+获得请求参数 -
tuspark:
讲解的很不错。URLConnection类的内容也可以看这篇文 ...
HttpURLConnection详解 -
wolf746773350:
...
window.location.href/replace/reload()--页面跳转+替换+刷新 -
wolf746773350:
[/flash]
window.location.href/replace/reload()--页面跳转+替换+刷新
1.一篇不错的 java自定义标签的文章地址:http://gaoshu2006.blog.sohu.com/113222643.html
2.sun公司java自定义标签原文地址:http://java.sun.com/developer/technicalArticles/xml/WebAppDev3/
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
jsp自定义标签 Tag文件版
实现一个与上篇文章类似的Select标签功能
1.在WEB-INF/tags/select.tag
<%@ tag body-content="empty" %>
<%@ tag dynamic-attributes="tagAttrs" %>
<%@ attribute name="optionsList" type="java.util.List" required="true" rtexprvalue="true"%>
<%@ attribute name="name" required="true"%>
<%@ attribute name="size" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<select name="${name }" size="${size }"
<c:forEach var="attrEntry" items="${tagAttrs }">
${attrEntry.key}="${attrEntry.value }"
</c:forEach>
>
<c:forEach var="option" items="${optionsList}">
<option value="${option }">${option}</option>
</c:forEach>
</select>
这里要注意tag文件只能放在如下位置:
1.WEB-INF/tags
2.WEB-INF/tags的子目录
3.WEB-INF/lib中jar包的META-INF/tags
4.WEB-INF/lib中jar包的META-INF/tags下的子目录
5.jar包中的tag文件需要tld
添加jstl.jar与standard.jar到WEB-INF/lib目录,还有一点就是上面标红的部分:不要使用http://java.sun.com/jstl/core这个url,否则会报foreach中的item属性有问题
2.在jsp中的使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="formTag" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<String> colorList = new ArrayList<String>();
colorList.add("red");
colorList.add("blue");
colorList.add("white");
request.setAttribute("colorList",colorList);
%>
<form action="" method="post">
<formTag:select name="color" size="1" optionsList="${requestScope.colorList}" style="width:140px"/>
</form>
</body>
</html>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
jsp 自定义标签
jsp标签有两组api
JspTag ->SimpleTag ->SimpleTagSupport
JspTag ->Tag ->IterationTag->BodyTag
第二组是classic的,比较早的使用方式,doStartTag(),doEndTag()有N多返回值的那种,使用起来也确实不方便,今天学到了另一个使用第一组api方式的,让人大快人心,贴码
例子是一个Select的标签,支持动态属性设置
1.编写标签类
public class SelectTagHandler extends SimpleTagSupport implements DynamicAttributes {
private static final String ATTR_TEMPLATE = "%s='%s'";
private static final String OPTION_TEMPLATE = "<option value='%1$s'>%1$s</option>";
private List optionsList;
private String name;
private String size;
private Map<String, Object> tagAttrs = new HashMap<String, Object>();
public void setName(String name) {
this.name = name;
}
public void setSize(String size) {
this.size = size;
}
public void setOptionsList(List optionsList) {
this.optionsList = optionsList;
}
@Override
public void doTag() throws JspException, IOException {
PageContext pageContext = (PageContext) getJspContext();
JspWriter out = pageContext.getOut();
out.print("<select ");
out.print(String.format(ATTR_TEMPLATE, "name", this.name));
out.print(String.format(ATTR_TEMPLATE, "size", this.size));
for (String attrName : tagAttrs.keySet()) {
String attrDefinition = String.format(ATTR_TEMPLATE, attrName, tagAttrs.get(attrName));
out.print(attrDefinition);
}
out.print(">");
for (Object option : this.optionsList) {
String optionTag = String.format(OPTION_TEMPLATE, option.toString());
out.println(optionTag);
}
out.println("</select>");
}
@Override
public void setDynamicAttribute(String uri, String name, Object value) throws JspException {
tagAttrs.put(name, value);
}
}
看到没,代码如此的简洁,动态属性配置也十分的方便,不用写N多个setter与getter方法.
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3g.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Forms Taglib</short-name>
<uri>http://hi.baidu.com/tags/forms</uri>
<description>
An example tab library of replacements for the html form tags.
</description>
<tag>
<name>select</name>
<tag-class>com.baidu.hi.tag.SelectTagHandler</tag-class>
<body-content>empty</body-content>
<attribute>
<name>optionsList</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.util.List</type>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
<attribute>
<name>size</name>
<required>true</required>
</attribute>
<dynamic-attributes>true</dynamic-attributes>
</tag>
</taglib>
3.在jsp中的使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="formTags" uri="/tld/select.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.ArrayList"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<String> colorList = new ArrayList<String>();
colorList.add("red");
colorList.add("blue");
colorList.add("white");
request.setAttribute("colorList",colorList);
%>
<form action="" method="post">
<formTags:select name="color" size="1" optionsList="${requestScope.colorList}" style="width:140px"/>
</form>
</body>
</html>
发表评论
-
java获得系统盘符(Windows、linux自动切换)
2017-12-22 16:08 2415做文件读写时,本机开发是windows系统,但服务器是li ... -
java switch的使用+switch用String作为条件
2012-03-23 16:58 67377一、java switch的基本使用: /* int参数的s ... -
java的Map循环
2012-03-23 11:18 1615import java.util.ArrayList; im ... -
Java字符串倒序输出 + 数组的排序
2012-03-08 18:06 9337一、Java字符串倒序输出 方法一:利用 ... -
java replaceall()和replace()
2012-01-16 15:22 3597####我的应用 String path=& ... -
Random()随机数+随机切换图片
2011-12-13 14:55 3155一、Random()随机数 转自:http://bl ... -
Request对象各种获得路径的方法+Request对象各种方法(.getRemoteAddr)
2011-12-13 14:43 9689用jboss发布的工程,测试request对象返回路径的方法, ... -
JavaBean命名规范,不能以一个字母开头bPrivNum,可以bussPrivNum
2011-09-30 13:54 2935今天做项目时候遇到个JavaBean的set()、get()方 ... -
计算机精度问题(Double)
2011-07-30 18:02 2254计算机精度问题(Double) 1.1.我们用计算器1 ... -
java代码段+jsp的基础应用
2011-07-29 16:10 1595项目需要大量使用自定义标签,讨厌的<%%>和< ... -
Java的split()函数
2011-07-19 16:04 4660今天用到String的split()函数,调试半天不好使! ... -
HttpURLConnection详解
2011-07-18 13:08 7640项目中用到HttpURLConnection,远程连接客户端, ... -
java中Thread.sleep()
2011-07-18 11:32 4871今天看到一篇文章,是说java的 Thread.sleep() ... -
java--自定义标签--(价格策略中应用)
2011-07-16 14:49 1916又用到java自定义标签,我比较不喜欢用它,没上心看,但是还得 ... -
String.format函数使用方法介绍
2011-06-29 17:43 1548今天看到一篇String.format文章,写的细致,复习了! ... -
java取消科学计数法
2011-06-29 17:34 19531前台输入手机号13777777777,如果是为Double类型 ... -
java.util.Date和java.sql.Date的区别及应用
2011-06-29 17:16 1764java.util.Date和java.sql.Date ... -
DecimalFormat数字格式化
2011-06-23 14:54 1551java类,可能需要用到数字格式化 DecimalFo ... -
Java中Set巧用,去掉重复数据
2011-06-22 16:56 39844java中Set有这样一个方法,.addAll( Collec ... -
java泛型_实用
2011-05-17 10:59 1350看了一篇很实用的java泛 ...
相关推荐
它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务逻辑的自定义组件,从而将视图层与业务逻辑分离,实现MVC架构。本文将深入探讨这两个概念以及如何使用`taglib`进行定义和...
总的来说,Java自定义标签提供了一种强大的方式来扩展JSP,使得开发者能够创建符合业务需求的定制化组件,提高了代码的复用性和灵活性。通过理解标签的生命周期和接口的使用,可以更有效地开发和维护JSP应用。
首先,自定义标签的实现主要依赖于两个核心概念:Tag接口和TagSupport类。`Tag`接口定义了自定义标签必须实现的方法,如`doStartTag()`和`doEndTag()`,它们分别在标签开始和结束时被调用。`TagSupport`类是`Tag`...
自定义标签通常由两个主要部分组成:标签库描述符(TLD,Tag Library Descriptor)和标签处理类(Tag Handler Class)。TLD是XML文件,用于定义标签的元数据,包括标签的名字、属性、返回的值类型等。而标签处理类则...
自定义标签的实现分为两种主要方式:简单标签(Simple Tags)和标准标签库(JSTL)中的标签。简单标签是Java 5引入的新特性,适用于处理简单的逻辑,而标准标签库中的标签通常用于更复杂的任务,如国际化、XML处理等...
在JavaServer Pages (JSP)开发中,自定义标签是一种强大的工具,可以提高代码的可读性和可维护性。它们允许开发者封装复杂的逻辑或组件为简洁的标签形式,类似于HTML标签。本篇将详细介绍如何创建JSP自定义标签。 ...
总结来说,JSTL自定义标签提供了一种高效且可重用的方法来扩展JSP的功能。通过编写处理类和定义TLD,我们可以创建符合特定需求的标签,使JSP页面更加简洁、易于维护。在实际应用中,自定义标签可以极大地提高代码的...
本篇文章将详细讲解如何创建并使用一个Java自定义分页标签。 首先,我们需要了解什么是自定义标签(Custom Tags)。在JSP中,自定义标签是一种扩展JSP功能的方法,它允许开发者封装复杂的逻辑或组件,以标签的形式...
每个标签库都通过一个TLD(Tag Library Descriptor)文件来描述,这个文件是XML格式,包含了标签的元数据,如标签名称、对应的Java类、属性等。 **3. 标签处理类** 每个自定义标签对应一个Java类,这个类负责处理...
自定义标签的实现有两种方式: - **简单标签(Simple Tag)**:适用于标签处理逻辑相对简单的场景,处理类只需要实现`javax.servlet.jsp.tagext.SimpleTag`接口,其中的`doTag()`方法负责执行标签逻辑。 - **全...
1. **创建TLD文件**:TLD(Tag Library Descriptor)文件定义了自定义标签的行为、属性及其关联的Java类。例如,你可以创建一个名为`fenyeTag.tld`的文件,其中包含分页标签的相关信息,如标签名称、描述、属性等。 ...
Java自定义标签的实现通常涉及两个主要部分:标签处理类(Tag Handler)和标签库描述文件(TLD,Tag Library Descriptor)。 在本例中,我们继承了`javax.servlet.jsp.tagext.TagSupport`类来创建自定义标签处理类...
### servlet与自定义标签知识点详解 #### 一、Servlet概述 Servlet是一种服务器端的应用程序接口(API),主要用于构建动态Web应用程序。它比JSP技术出现得更早,...掌握这两种技术,对于深入理解Web开发有着重要意义。
自定义标签由两部分组成:标签处理程序类(Tag Handler Class)和标签库描述符(TLD,Tag Library Descriptor)。 2. **创建自定义标签** 创建自定义标签涉及以下步骤: - 定义处理程序类:这个类需要继承自`...
在JSP中,自定义标签通常由两部分组成:标签库描述文件(TLD,Tag Library Descriptor)和标签处理类(Tag Handler Class)。TLD用于定义标签的元数据,包括标签名称、属性、导出的标签库等信息;而标签处理类则实现...
总的来说,Java JSP自定义标签的开发提供了一种强大的工具,使得开发者能够构建更加灵活且易于维护的JSP应用。通过自定义标签,可以将复杂的业务逻辑封装起来,降低视图层的复杂度,提高代码的可重用性和可维护性。...
4. 标签处理类(Tag Handle Class):处理类是Java类,通常继承自TagSupport或实现了SimpleTag接口,负责实现自定义标签的功能。 二、自定义JSP标签的格式: 1. 使用自定义标签需要指定标签库的前缀(Prefix),前缀...
在Java Web开发中,自定义标签通常由两部分组成:标签处理类(Tag Handler)和标签库描述文件(TLD,Tag Library Descriptor)。标签处理类实现了自定义标签的行为,而TLD文件则定义了标签的属性、事件以及与处理类...
在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一种标准标签库,用于增强JSP页面的功能,使其更加简洁和可维护。JSTL 1.1是该库的一个版本,提供了多种处理常见Web任务的标签,如迭代、条件...
总结来说,Java自定义标签提供了一种模块化和可复用的机制,使得JSP页面的编写更加灵活和高效。通过创建标签处理程序和定义TLD文件,开发者可以创建出符合业务需求的自定义标签,提高代码质量和开发效率。