- 浏览: 456522 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
关于带有Body标签的开发。另外,标签中可以从JSP中传入参数,下面给个案例瞅瞅!
带有Body的Tag必须实现javax.servlet.jsp.tagext.BodyTag接口,BodyTag接口中定义了一些处理标签体的方法。下面给出BodyTag的处理过程:
1. 当容器创建一个新的标签实例后,通过setPageContext设置标签的页面的上下文。
2. 使用setParent方法设置这个标签的上一级标签。如果没有上一级嵌套,设置为null。
3. 设置标签的属性,这个属性在标签库描述文件中定义。如果没有定义属性,就不调用此类方法
4. 调用doStartTag方法,这个方法可以返回EVAL_BODY_INCLUDE和SKIP_BODY。当返回EVAL_BODY_INCLUDE时,就计算标签的Body;如果返回SKIP_BODY,就不再计算标签的Body
5. 调用setBodyContent设置当前的BodyContext。
6. 调用doInitBody.如果在计算BodyContent时,需要进行一些初始化,就在这个方法中进行
7. 每次计算完BodyTag后调用doAfterBody。如果返回EVAL_BODY_TAG,表示继续计算一次BodyTag,直到返回SKIP_BODY才继续执行步骤8
8. 调用doEndTag方法,这个方法可以返回EVAL_PAGE或者SKIP_PAGE。当返回EVAL_PAGE时,容器将在标签结束时继续计算JSP页面的其他部分;如果返回SKIP_PAGE容器将在标签结束时停止计算JSP页面的其他部分。
9. 调用release()方法释放标签程序占用的任何资源。
代码显示
BodyTagExamplt的标签描述如下
注意:1. Body-Content必须是jsp
2. counts为此标签的属性,它和BodyTagExample中定义的属性"int counts"必须一样。并且BodyTagExample中必须有setCounts(int counts)方法,否则这个属性就不能设置。
3.<required>表示这个属性是必需的。
测试页面代码
OK,进行调试任何看输出。
带有Body的Tag必须实现javax.servlet.jsp.tagext.BodyTag接口,BodyTag接口中定义了一些处理标签体的方法。下面给出BodyTag的处理过程:
1. 当容器创建一个新的标签实例后,通过setPageContext设置标签的页面的上下文。
2. 使用setParent方法设置这个标签的上一级标签。如果没有上一级嵌套,设置为null。
3. 设置标签的属性,这个属性在标签库描述文件中定义。如果没有定义属性,就不调用此类方法
4. 调用doStartTag方法,这个方法可以返回EVAL_BODY_INCLUDE和SKIP_BODY。当返回EVAL_BODY_INCLUDE时,就计算标签的Body;如果返回SKIP_BODY,就不再计算标签的Body
5. 调用setBodyContent设置当前的BodyContext。
6. 调用doInitBody.如果在计算BodyContent时,需要进行一些初始化,就在这个方法中进行
7. 每次计算完BodyTag后调用doAfterBody。如果返回EVAL_BODY_TAG,表示继续计算一次BodyTag,直到返回SKIP_BODY才继续执行步骤8
8. 调用doEndTag方法,这个方法可以返回EVAL_PAGE或者SKIP_PAGE。当返回EVAL_PAGE时,容器将在标签结束时继续计算JSP页面的其他部分;如果返回SKIP_PAGE容器将在标签结束时停止计算JSP页面的其他部分。
9. 调用release()方法释放标签程序占用的任何资源。
代码显示
package com.test.ch14; ...//imports public class BodyTagExample extends BodyTagSupport { int counts;// counts 为迭代的次数 public BodyTagExample(){ super(); } /** 设置count属性,这个方法由容器自动调用*/ public void setCount(int c){ this.counts = c; } /** 覆盖doStartTag方法*/ public int doStartTag()throws JspTagException{ System.out.println("doStartTag"); if(counts > 0){ return EVAL_BODY_TAG; }else{ retrun SKIP_BODY; } } /** 覆盖doAfterBody方法*/ public int doAfterBody() throws JspTagException{ System.out.println("doAfterBody"+counts); if(counts > 0){ counts --; return EVAL_BODY_TAG; }else{ return SKIP_BODY; } } /** 覆盖doEndTag方法*/ public int doEndTag()throws JspTagException{ System.out.println("doEndTag"); try{ if(bodyContent != null){ bodyContent.writeOut(bodyContent.getEnclosingWriter()); } }catch(java.io.IOException e){ throw new JspTagException("IOError:" +e.getMessage()); } return EVAL_PAGE; } public void doInitBody() throws JspTagException{ System.out.println("doInitBody"); } public void setBodyContent(BodyContent bodyContent){ System.out.println("setBodyContent"); this.bodyContent = bodyContent; } }
BodyTagExamplt的标签描述如下
<tag> <name>loop</name> <tag-class>com.test.ch14.BodyTagExample</tag-class> <body-content>jsp</body-content> <attribute> <name>counts</name> <required>true</required> <rtexprvalue>true</rtexprvale> </attribute> </tag>
注意:1. Body-Content必须是jsp
2. counts为此标签的属性,它和BodyTagExample中定义的属性"int counts"必须一样。并且BodyTagExample中必须有setCounts(int counts)方法,否则这个属性就不能设置。
3.<required>表示这个属性是必需的。
测试页面代码
<%@ taglib uri="demotag" prefix="bodytag"%> <html> <head> <title>Test body Tag</title> <meta http-equiv="Content-Type" context="text/html;charset=gb2312"> </head> <body> <HR> <bodytag: loop counts="5"> 现在的时间是:<%= new java.util.Date()%><BR> </bodytag: loop> </HR> </body> </html>
OK,进行调试任何看输出。
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2084最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 993在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 883最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 93781.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 860FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 753核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 1004HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 771基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1237基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 1048在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2189在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2211JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2237在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 35071.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1424java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4512在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3941在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18927前面介绍和总结了JPA ... -
JPA学习之二(入门篇)
2010-04-16 10:48 3761简单总结下,JPA的入门。在学习JPA的时候运用参考Hib ... -
JPA2.0的学习一
2010-04-15 17:18 8634Java EE 5平台引入了Java ...
相关推荐
通过标签库,开发人员可以创建可重用的代码片段,提高开发效率,同时简化JSP页面的复杂度。标签库中的标签扩展是一种Java类,它实现了或者运行了JSP规范定义的接口,比普通的JavaBean具备更丰富的运行时协议。 ### ...
#### 三、开发带属性的标签 扩展“helloTag”功能,使其支持属性设置,如字体大小和颜色。这需要在标签实现类中添加对属性的支持,并在TLD文件中定义相应的属性描述。 ```java public class helloTagHaveProp ...
### jsp自定义标签库知识点详解 #### 一、什么是jsp自定义标签? 1. **概念**:JSP 自定义标签是一种将复杂的功能封装成一个简单的标签的方式,它允许开发者创建可重用的代码组件,这些组件可以在 JSP 页面中像...
在Java Web开发中,我们经常使用自定义标签(Tag Library)来提高代码的可读性和复用性。...这个实例是一个很好的起点,可以进一步研究如何添加更多的属性、处理复杂的逻辑,以及与其他标签库集成。
- **标签库描述文件(TLD)**:TLD是XML文件,它定义了标签库的元数据,包括标签的名称、类、属性等。 2. **自定义标签的形式** - **简单格式**:无标签体,不嵌套其他标签,如`<yourDate:displayDate/>`。 - **...
完成上述步骤后,你可以在JSP页面中通过`<%@ taglib uri="/WEB-INF/myTag.tld" prefix="myTag" %>`导入标签库,并使用类似`<myTag:bodyTag1 countNum="10">`的语法来使用自定义标签。 #### 三、示例代码解析 以下...
**JSP自定义标签的使用**是JSP应用开发中的一种高级特性,它允许开发者创建自己的标签库,以更简洁、可复用的方式编写代码,提高程序的可读性和维护性。下面我们将深入探讨自定义标签的相关概念和创建步骤。 **1. ...
这段代码将在`<BODY>`内生成一个带有动态消息的`<h1>`标签。 2. **CSS控制**:ASP允许我们在服务器端设置`<BODY>`标签的CSS属性,如背景颜色、字体大小等。例如: ```asp <body style="() %>"> ``` 在这里,`...
在Web开发中,自定义标签库是提升代码复用性和可维护性的重要手段,尤其是在JavaServer Pages (JSP)环境中。本文将基于一篇技术笔记——《自定义标签库制作(二)》,详细阐述如何创建并应用带有参数的自定义标签。 ...
JSTL(JavaServer Pages Standard Tag Library),自JSP 1.1规范引入以来,便成为Web开发者的重要工具,旨在减少自定义标签库的重复开发工作,提高开发效率与代码可读性。作为Apache Jakarta项目的一部分,JSTL持续...
C标签,全称为JavaServer Pages Standard Tag Library,是JSP中一种重要的标签库,它提供了丰富的功能,使得开发者能够更加方便地处理常见的JSP任务。本文将深入探讨C标签的使用方法,特别是 `<c:out>` 标签的用法。...
同时,开发人员还可以创建自己的自定义标签库,以满足特定项目需求。 ### 二、自定义标签的创建 创建自定义标签涉及以下几个步骤: 1. **定义标签处理类**:这个类将实现自定义标签的行为,继承自`javax.servlet....
4. **部署和使用**:将TLD文件放置在Web应用的`WEB-INF`目录下的`taglib`目录中,然后在JSP页面中通过`<%@ taglib %>`指令引入标签库,并使用自定义标签。例如: ```jsp ... 这是标签体内容 ``` 通过上述...
3. **带body的标签**:标签内部可以包含其他JSP内容(body),处理类可以访问和操作这部分内容。 4. **定义脚本变量的标签**:在标签执行过程中,可以创建并设置脚本变量供后续代码使用。 5. **具有协作关系的标签**...
1. **标签库描述文件(TLD, Tag Library Descriptor)**:这是定义自定义标签的元数据文件,用于声明标签的名称、属性、作用域等信息。例如,在`mytags.tld`文件中,我们可以定义名为`paging`的标签,指定它的属性如...
标签分为两种类型:标准标签库(JSTL)和自定义标签库(Custom Tags)。标准标签库如JSTL提供了许多预定义的标签,如控制流、I/O操作等,而自定义标签则允许开发者根据项目需求创建自己的功能组件。 二、创建JSP...
在JavaServer Pages (JSP)...通过定义处理器类和TLD文件,我们可以创建自己的标签库,从而提高代码的可维护性和效率。在实际开发中,理解并熟练掌握自定义标签的创建和使用,对于提升JSP应用的开发质量和效率至关重要。
1. **标签库描述符(TLD)**:在TLD文件中,开发者会声明这个分页标签,包括标签的名字、属性(如当前页数、总页数等)、以及指向标签处理类的引用。 ```xml <name>paging <tag-class>...
JSP标签库(Tag Library)则允许开发者自定义标签,扩展JSP的功能,类似于XML扩展HTML。 **自定义Tag标签** 自定义Tag标签是开发者根据需求创建的特定功能标记,它们可以处理复杂的业务逻辑,如操作数据、处理表单...
Java自定义标签是JSP开发中的一个重要特性,它允许开发者扩展JSP页面的功能,通过创建自己的标签库来封装复杂逻辑或常见操作。本教程将详细讲解如何创建和使用自定义标签。 首先,JSP中的标签库是实现自定义功能的...