- 浏览: 821939 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
jsp自定义标签实例
JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。
标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。
标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。tag标签相关属性:实现简单标签处理程序 标签处理程序是一个在运行时调用的Java类,它包含在 JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。
最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例:
其实对自定义标签已经早有接触了(Struts中使用了很多自定义标签,如html、bean等)
使用这种技术的优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员
实现步骤:
首先启动eclipse,新建一个web项目(废话...)
1、修改web.xml文件,增加自定义标签支持
2、创建标签库TLD文件 tlds\helloworld.tld
这里注意:web.xml和xxx.tld这两个XML文件的头信息的版本匹配很重要,否则会导致页面报错找不到标签
3、创建标签处理程序类 HelloWorldTag(重写doStartTag和doEndTag方法)
Java代码 复制代码
补充:
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页
doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步
EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用
EVAL_PAGE:继续处理页面,doEndTag()函数可用
SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用
SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用
EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法
EVAL_BODY_AGAIN:请求继续处理body,返回自doAfterBody(),这个返回值在你制作循环tag的时候是很有用的。
预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.
如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:doStartTag() ->不显示文字 ->doEndTag()->执行接下来的网页
如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页
4、最终测试页面 hello.jsp
JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。
标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。
标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。tag标签相关属性:实现简单标签处理程序 标签处理程序是一个在运行时调用的Java类,它包含在 JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。
最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例:
其实对自定义标签已经早有接触了(Struts中使用了很多自定义标签,如html、bean等)
使用这种技术的优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员
实现步骤:
首先启动eclipse,新建一个web项目(废话...)
1、修改web.xml文件,增加自定义标签支持
1. <?xml version="1.0" encoding="UTF-8"?> 2. <web-app version="2.5" 3. xmlns="http://java.sun.com/xml/ns/javaee" 4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7. <jsp-config> 8. <taglib> 9. <taglib-uri>/helloworldTag</taglib-uri> 10. <taglib-location>/WEB-INF/tlds/helloworld.tld</taglib-location> 11. </taglib> 12. </jsp-config> 13. </web-app> <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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-app_2_5.xsd"> <jsp-config> <taglib> <taglib-uri>/helloworldTag</taglib-uri> <taglib-location>/WEB-INF/tlds/helloworld.tld</taglib-location> </taglib> </jsp-config> </web-app>
2、创建标签库TLD文件 tlds\helloworld.tld
1. <?xml version="1.0" encoding="UTF-8"?> 2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 3. "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> 4. <taglib> 5. <tlib-version>1.0</tlib-version><!-- 标签库的版本 --> 6. <jsp-version>1.2</jsp-version><!-- 这个标签库要求的JSP规范版本 --> 7. <short-name>mytag</short-name><!-- JSP页面编写工具可以用来创建助记名的可选名字 --> 8. <tag> 9. <name>helloworld</name><!-- 唯一标签名 --> 10. <tag-class>com.fastfish.HelloWorldTag</tag-class><!-- 标签HelloWorldTag类的完全限定名 --> 11. <body-content>empty</body-content><!-- 正文内容类型 --> 12. </tag> 13. </taglib> <?xml version="1.0" encoding="UTF-8"?> <!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><!-- 这个标签库要求的JSP规范版本 --> <short-name>mytag</short-name><!-- JSP页面编写工具可以用来创建助记名的可选名字 --> <tag> <name>helloworld</name><!-- 唯一标签名 --> <tag-class>com.fastfish.HelloWorldTag</tag-class><!-- 标签HelloWorldTag类的完全限定名 --> <body-content>empty</body-content><!-- 正文内容类型 --> </tag> </taglib>
这里注意:web.xml和xxx.tld这两个XML文件的头信息的版本匹配很重要,否则会导致页面报错找不到标签
3、创建标签处理程序类 HelloWorldTag(重写doStartTag和doEndTag方法)
Java代码 复制代码
1. package com.fastfish; 2. 3. import java.io.IOException; 4. import javax.servlet.jsp.JspException; 5. import javax.servlet.jsp.JspTagException; 6. import javax.servlet.jsp.tagext.TagSupport; 7. /** 8. * TagSupport与BodyTagSupport的区别: 9. * 主要看标签处理类是否要读取标签体的内容和改变标签体返回的内容,如果不需要就用TagSupport,否则就用BodyTagSupport 10. * 用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSupport 11. */ 12. public class HelloWorldTag extends TagSupport { 13. private static final long serialVersionUID = 3174234039143531070L; 14. @Override 15. public int doStartTag() throws JspException {//这个方法不用所以直接返回值 16. return EVAL_BODY_INCLUDE; 17. } 18. @Override 19. public int doEndTag() throws JspException {//重点在这个方法上 20. try { 21. pageContext.getOut().write("Hello World!");//标签的返回值 22. } catch (IOException ex) { 23. throw new JspTagException("错误"); 24. } 25. return EVAL_PAGE; 26. } 27. } package com.fastfish; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.TagSupport; /** * TagSupport与BodyTagSupport的区别: * 主要看标签处理类是否要读取标签体的内容和改变标签体返回的内容,如果不需要就用TagSupport,否则就用BodyTagSupport * 用TagSupport实现的标签,都可以用BodyTagSupport来实现,因为BodyTagSupport继承了TagSupport */ public class HelloWorldTag extends TagSupport { private static final long serialVersionUID = 3174234039143531070L; @Override public int doStartTag() throws JspException {//这个方法不用所以直接返回值 return EVAL_BODY_INCLUDE; } @Override public int doEndTag() throws JspException {//重点在这个方法上 try { pageContext.getOut().write("Hello World!");//标签的返回值 } catch (IOException ex) { throw new JspTagException("错误"); } return EVAL_PAGE; } }
补充:
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页
doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步
EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用
EVAL_PAGE:继续处理页面,doEndTag()函数可用
SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用
SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用
EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法
EVAL_BODY_AGAIN:请求继续处理body,返回自doAfterBody(),这个返回值在你制作循环tag的时候是很有用的。
预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.
如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:doStartTag() ->不显示文字 ->doEndTag()->执行接下来的网页
如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页
4、最终测试页面 hello.jsp
1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2. <%@ taglib uri="/helloworldTag" prefix="mytag"%><!-- 在页面中加以声明 --> 3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4. <html> 5. <head> 6. <title>MyJSP</title> 7. </head> 8. <body> 9. <h1>自定义标签:</h1><br> 10. <mytag:helloworld></mytag:helloworld> 11. </body> 12. </html>
发表评论
-
登录 回车登录
2010-08-23 17:44 5154登录实例 /** 光标在username输入框时按下 ... -
(jsp语言)登录实例(JS聚集回车键,并通过Ajax判断用户名,密码的正确性)
2010-08-23 17:42 1931下面是一个简单的登录实例(JS聚集回车键,并通过Ajax判断用 ... -
JSP-使用自定义标签来操作数据库
2010-08-20 17:22 1161JSP-使用自定义标签来操作数据库 范例一:使用 ... -
jsp总结
2010-08-15 21:31 852一、JSP标签基本概念: 1.标签(Tag): 标签是一种XM ... -
JSP标签总结
2010-08-12 11:50 3086一、JSP标签基本概念: 1.标签(Tag): 标签是一种XM ... -
jsp引人js文件乱码问题
2010-08-03 12:22 1205如果网页编码规则是utf-8,即在网页头部中可以看到如下代码: ...
相关推荐
本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现主要依赖于两个核心概念:Tag接口和TagSupport类。`Tag`接口定义了自定义标签必须实现的方法,如`doStartTag()`和`doEndTag()`,它们...
五、自定义标签实例 一个简单的HelloWorld自定义标签可能如下: 1. 创建TLD文件(hello.tld): ```xml xsi:schemaLocation=...
综上所述,JSP自定义标签提供了一种强大的方式来组织和复用代码,而分页标签则是实际项目中常见的应用场景。结合Java反射机制,我们可以灵活地调用各种服务方法,实现复杂的功能,同时保持页面逻辑的清晰和简洁。...
### JSP自定义标签概述及实现 #### 一、引言 JSP (JavaServer Pages) 是一种基于Java技术的标准,用于开发动态Web应用程序。它允许开发者将Java代码嵌入到HTML页面中,从而实现动态内容的生成。为了提高代码的复用...
#### 三、创建JSP自定义标签实例:格式化数据 假设我们需要创建一个用于格式化日期的自定义标签。下面将详细介绍创建步骤: ##### 1. 定义标签库描述文件(TLD) 首先,我们需要定义一个标签库描述文件(TLD),...
本教程将深入探讨JSP自定义标签的使用,同时结合实例介绍分页和下拉框绑定值的封装。 一、JSP自定义标签基础 1. **定义标签库(Tag Library)**:自定义标签首先需要定义一个TLD(Tag Library Descriptor)文件,它...
本实例将带你深入理解JSP自定义标签的创建和使用。 首先,我们要了解自定义标签的结构。自定义标签通常由三部分组成:标签库描述文件(TLD)、标签处理类(Tag Handler)和JSP页面。TLD是XML格式的文件,用于定义...
为了运行和测试这个自定义标签实例,你需要将其部署到支持JSP的Web服务器(如Tomcat),然后通过浏览器访问`index.jsp`页面。如果一切配置正确,你应该能看到自定义标签按预期工作。 通过学习和实践这个JSP自定义...
以下是一个关于"jsp自定义标签简单实例"的详细说明。 1. **自定义标签概述** 自定义标签是JSP 1.2版本引入的新特性,它允许开发者创建符合XML语法规则的自定义标签库,这些标签库可以包含一系列具有特定功能的标签...
下面我们来实现一个非常简单的自定义标签,期望通过这个简单的实例引领各位进入自定义标签的领域。我们准备定义的这个自定义标签所实现的功能是在JSP页面中显示出版权信息,并且在以后的博文中,我们还会对它进行...
本资源“jsp自定义标签大全.rar”提供了一套全面的JSP自定义标签的实例和指南,旨在帮助开发者深入理解和应用这一特性。 **JSP自定义标签的基本概念** JSP自定义标签不同于标准动作标签(如<jsp:include>或<jsp:...
本DLC(Digital Learning Content,数字学习资源)将深入探讨如何创建和使用JSP自定义标签,并通过实例来帮助理解这一过程。 一、JSP自定义标签基础 1.1 JSP标准标签库(JSTL) 在自定义标签之前,我们需要了解...