- 浏览: 624000 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
xianzi_2008:
xianzi_2008 写道楼主请教下,我缓存了一个List& ...
Ehcache -
xianzi_2008:
楼主请教下,我缓存了一个List<Bean>对象, ...
Ehcache -
jsdsh:
收藏好.五个字
hibernate之one-to-many详细 -
Tlife:
好!!!!
hibernate------HQL总结 -
yanqingluo:
例子很恰当。
观察者模式
自定义标签处理类一般都继承TagSupport或BodyTagSupport
1.先看一个普通的最简单的自定义标签程序。
A:创建标签的处理类
B:创建标签库描述文件
C.在JSP文件中引入标签库,然后插入标签
jsp里有两种引用方式:
<%@ taglib uri="/WEB-INF/hello.tld" prefix="aa" %>或者
<%@ taglib uri="/hellotag" prefix="aa" %>
输出结果为:hello
2.自定义标签库引用资源文件
A:首先在应用程序根目录下建立一个资源文件比如叫:helloworld.properties,内容为:
B:建立一个Servlet,在启动时加载该Servlet,在init方法里读取helloworld.properties文件内容。
C:创建标签库的处理类:
D:创建自定义标签的描述文件
E:jsp里引用
输出内容为:
tagTitle
tagContent
1.先看一个普通的最简单的自定义标签程序。
A:创建标签的处理类
package com.test.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; @SuppressWarnings("serial") public class HelloTag extends TagSupport { //doStartTag返回的都是BODY相关,doEndTag返回的都是PAGE相关 @Override public int doStartTag() throws JspException { try { //通过PageContext对象的getOut()方法获得JspWriter对象输出内容 this.pageContext.getOut().write("hello"); } catch (IOException e) { e.printStackTrace(); } return Tag.EVAL_BODY_INCLUDE; } }
B:创建标签库描述文件
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>hello taglib test</short-name> <uri>/hellotag</uri> <tag> <!--Tag名字 --> <name>hello</name> <!-- 该Tag对应的处理类 --> <tag-class>com.test.tag.HelloTag</tag-class> <!-- 该 Tag的body内容为空 --> <body-content>empty</body-content> </tag> </taglib>
C.在JSP文件中引入标签库,然后插入标签
jsp里有两种引用方式:
<%@ taglib uri="/WEB-INF/hello.tld" prefix="aa" %>或者
<%@ taglib uri="/hellotag" prefix="aa" %>
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/hellotag" prefix="aa" %> <html> <body> <aa:hello/> </body> </html>
输出结果为:hello
2.自定义标签库引用资源文件
A:首先在应用程序根目录下建立一个资源文件比如叫:helloworld.properties,内容为:
hello.title=tagTitle hello.content=tagContent
B:建立一个Servlet,在启动时加载该Servlet,在init方法里读取helloworld.properties文件内容。
package com.test.tag; import java.io.InputStream; import java.util.Properties; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @SuppressWarnings("serial") public class TagServlet extends HttpServlet { public void init() throws ServletException { System.out.println("init not param"); } //init(ServletConfig config)存在,则init()方法则不会执行。如果init(ServletConfig config)不存在,则init()方法会执行 @Override public void init(ServletConfig config) throws ServletException { try{ System.out.println("init have param"); Properties p = new Properties(); //通过ServletContext读取资源文件 ServletContext context = config.getServletContext(); InputStream in = context.getResourceAsStream("/helloworld.properties"); p.load(in); in.close(); //设置属性key-value到context中 context.setAttribute("prop", p); }catch(Exception e){ e.printStackTrace(); } } }
C:创建标签库的处理类:
package com.test.tag; import java.util.Properties; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; @SuppressWarnings("serial") public class HelloTagByResource extends TagSupport { private String title; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } //在doStartTag和doEndTag里写都可以。不要误认为:"遇到标签的起始标记时,还没有解析到其属性title,所以放在doStartTag里写会报错" @SuppressWarnings("static-access") @Override public int doStartTag() throws JspException { try{ // Properties p = (Properties)this.pageContext.getAttribute("ps",this.pageContext.APPLICATION_SCOPE); Properties p = (Properties)this.pageContext.getAttribute("ps",PageContext.APPLICATION_SCOPE); String str = p.getProperty(title); this.pageContext.getOut().print(str); }catch(Exception e){ e.printStackTrace(); } return Tag.EVAL_BODY_INCLUDE; } // @Override // public int doEndTag() throws JspException { // try{ //// Properties p = (Properties)this.pageContext.getAttribute("ps",this.pageContext.APPLICATION_SCOPE); // Properties p = (Properties)this.pageContext.getAttribute("ps",PageContext.APPLICATION_SCOPE); // String str = p.getProperty(title); // this.pageContext.getOut().print(str); // }catch(Exception e){ // e.printStackTrace(); // } // return Tag.EVAL_PAGE; // } }
D:创建自定义标签的描述文件
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>hello taglib test</short-name> <uri>/hellotag</uri> <tag> <!--Tag名字 --> <name>hello</name> <!-- 该Tag对应的处理类 --> <tag-class>com.test.tag.HelloTag</tag-class> <!-- 该 Tag的body内容为空 --> <body-content>empty</body-content> </tag> <tag> <!--Tag名字 --> <name>message</name> <!-- 该Tag对应的处理类 --> <tag-class>com.test.tag.HelloTagByResource</tag-class> <!-- 该 Tag的body内容为空 --> <body-content>empty</body-content> <!-- 属性定义 --> <attribute> <name>title</name> <required>true</required> </attribute> </tag> </taglib>
E:jsp里引用
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/hellotag" prefix="aa" %> <html> <body> <aa:message title="hello.title"/><br/> <aa:message title="hello.content"/> </body> </html>
输出内容为:
tagTitle
tagContent
发表评论
-
常用小代码段和开发经验收集
2011-04-21 14:47 990工作中用到的笔记,方便查找,不断补充。 1,截取过长的文字部分 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2009-08-26 12:25 3905转载:http://www.blogjava.net/hwpo ... -
java调用dll(Eclipse+CDT+MinGW)
2009-03-06 15:25 6555第一步:配置环境 需要安装CDT和MinGW. CDT:因为 ... -
servlet2.5与el表达式
2008-11-23 15:23 2677Servlet2.4版本默认支持EL,如果在MyEclipse ... -
自定义ClassLoader遇到的问题
2008-09-16 16:47 15261.自定义的类加载器 package classloa ... -
Failed to install Tomcat6 service(Tomcat6安装失败解决方法)
2008-05-06 16:24 11722转载 :http://www.handandaily.com/ ... -
tomcat5.5日志配置
2008-05-06 16:13 2531tomcat5.5日志配置: 从Tomcat5.5后,默认设置 ... -
java List<String>集合 传递值给js的数组
2008-04-21 18:12 5345<script> var intIndex= ... -
c3p0 com.mysql.jdbc.CommunicationsException异常
2008-02-18 17:32 6247使用c3p0,偶尔会报异常: 2008-02-18 10:52 ... -
Pattern Matcher
2008-02-18 10:30 1952package test; import java. ... -
FileUpload组件上传文件
2008-01-23 03:05 6713利用FileUpload组件上传文件,需要到apache上下载 ... -
hibernate大字段处理
2008-01-21 16:45 3217hibernate大字段处理:以mysql为例 比如传张图片, ... -
一个页面嵌套一个页面
2008-01-15 10:45 3552一个页面嵌套一个页面,比如a.jsp嵌套b.jsp那么可以用 ... -
java clone
2008-01-13 18:17 59581.java里的clone分为: A:浅复制(浅克隆): 浅复 ... -
修改Eclipse注释里的${Date}变量格式
2008-01-08 15:47 82301.eclipse3.3里${date}日期格 ... -
List移除元素
2008-01-05 16:16 24891. Iterator的remove()是移除从集合里取出来的 ... -
JDom处理xml
2008-01-05 13:51 21221.DOM的缺点主要是由于DOM是一个接口定义语言(IDL), ... -
观察者模式
2008-01-03 00:45 21389观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听 ... -
DelegatingRequestProcessor
2007-12-27 11:30 3700采用DelegatingRequestProcessor将处理 ... -
Dom and Sax
2007-12-26 20:20 1210jaxp: java apis for xml parsing ...
相关推荐
一个完整的自定义标签可能包含多个属性,处理类根据属性值进行不同的操作,例如输出定制的文本、调用其他服务等。 4.3 TLD 文件概述 TLD文件是XML格式,定义了标签库的元数据,包括标签名称、属性、属性类型、标签...
在`.ftl`文件中,可以通过`<@myTag...>`调用自定义标签,其中`myTag`是Java类的别名。标签的参数可以通过`param name="value"`方式传递。例如: ```html 内容... ``` 4. **自定义标签的执行上下文** ...
JSP自定义标签的种类随着JSP版本的更新也在不断丰富,JSP 1.2中的传统标签与JSP 2.0中新增的简单标签和标签文件,为开发者提供了更多的选择。通过熟练掌握自定义标签的开发和使用,可以显著提高JSP应用的开发效率和...
1. **定义标签库(TLD)**:自定义标签库描述文件(TLD, Tag Library Descriptor)是定义自定义标签的地方。TLD文件通常以`.tld`为扩展名,其中包含了标签的元数据,如标签名称、属性、返回类型等。例如: ```xml ...
2. **作用**:TLD文件的作用是让Web容器能够识别并正确处理自定义标签。 3. **位置**:通常放置于`WEB-INF`目录下的`classes`或者`lib`文件夹中,也可以放置在`/META-INF/tags`目录下。 #### 五、实现自定义标签 1...
自定义标签由三部分组成:标签库描述符(TLD)、标签处理类(Tag Handler Class)和标签库文件(JSP页面上的taglib指令)。TLD文件定义了标签的属性、行为以及它所关联的处理类。处理类是Java类,实现了JSP标准标签...
在Java中,自定义标签是通过实现特定的接口或继承已有的支持类来完成的。 首先,Java自定义标签是一个Java类,它可以实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个接口定义了标签的生命周期方法,如`...
- 在JSP页面中,可以通过`<taglib>`元素和`.tld`文件定义自定义标签及其属性。`.tld`文件是标签库描述符,用于描述标签的行为、属性和它们的类型。 4. **实例化和使用**: - 在JSP页面中通过`<jsp:useBean>`引入...
自定义标签由两部分组成:标签库描述符文件(TLD,Tag Library Descriptor)和标签处理类(Tag Handler Class)。TLD文件定义了标签的元数据,包括标签的名称、属性、返回类型等信息,通常以`.tld`为扩展名。而标签...
### servlet与自定义标签知识点详解 #### 一、Servlet概述 Servlet是一种服务器端的应用程序接口(API),主要用于构建动态Web应用程序。它比JSP技术出现得更早,在JSP诞生前,Servlet不仅负责处理业务逻辑...
"fenye.jar"是包含了自定义标签处理类和相关资源的库文件,这个库需要被添加到项目的类路径中以便使用。 分页功能的核心在于如何计算和展示当前页及周边页的数据。这通常涉及到以下几个步骤: 1. 计算总页数:根据...
在Java服务器页面(JSP)技术中,自定义标签是扩展JSP功能的重要手段。...在提供的压缩包文件中,包含的自定义标签库源码正是实践这些概念的实际示例,通过阅读和学习,你可以更深入地了解自定义标签的工作原理。
1. **标签库描述文件(TLD, Tag Library Descriptor)**:这是定义自定义标签的核心文件,通常以`.tld`为扩展名。在这个文件中,我们可以定义标签的名字、属性、返回类型等元信息。例如,分页标签可能需要定义如“当前...
这包括创建标签处理类、编写TLD文件、在JSP页面中导入标签库以及调用自定义标签。这些教程将帮助你理解自定义标签的生命周期、方法调用顺序以及如何处理标签的属性。 在“更多场景的示例Demo”中,你可以找到各种...
完成上述步骤后,就可以在JSP页面中使用 `<mytaglib:hello/>` 来调用自定义标签了。这将触发标签处理类中的逻辑,最终在浏览器中显示 “Hello!!!”。 通过以上步骤,我们成功地创建并部署了一个简单的自定义标签库...
JSP标签可以分为两类:标准标签库(JSTL)和自定义标签。本教程将深入探讨JSP自定义标签的创建、使用和底层实现。 **一、JSP自定义标签概述** 自定义标签允许开发者创建自己的标签库,这些标签库可以像HTML标签一样...
这个"自定义标签源代码"的学习资源应该包含了TLD文件、处理类源码以及相关的示例JSP页面,通过分析和实践这些代码,你可以更好地掌握自定义标签的运用。在压缩包`taglib`中,可能包含了这些文件,你可以解压后逐一...
6. **生命周期方法**:自定义标签处理类需要实现几个关键的方法,如`doStartTag()`、`doEndTag()`、`release()`等,这些方法分别在标签开始、结束以及释放资源时被调用。 在`J2EE29_Tag`这个压缩包中,可能包含了...
自定义标签可以通过`java.util.ResourceBundle`类实现国际化,TLD文件中可以指定资源文件的位置,标签处理类根据当前请求的语言环境加载相应的字符串。 **八、自定义标签的错误处理** 当标签执行过程中发生异常时,...
自定义标签库 自定义标签库是 JSP 页面...为自定义标签定义属性时,每个属性都必须按照 JavaBean 的属性命名方式,在标签处理器中定义属性名对象的 setter 方法,用来接收 JSP 页面调用自定义标签时传递进来的属性值。