相信大家在编辑Jsp页面的时候用到过“自定义标签”,

自定义标签主要用于调用Javaean组件中的操作和执行请求分派的标准,JSP标签简化了JSP页面的开发和维护。JSP技术还提供了在自定义标签中封装其他动态功能的机制,这种自定标签是JSP语言的扩展。自定义标签通常是以标签库的形式出现的,它定义了一组相关的自定义标签,并包含实现这些标签的对象。
可以由自定义标签执行的任务包括对隐式对象的操作、处理表单、访问数据库和其他企业级服务,如电子邮件和目录、以及执行流程控制。JSP标签库是由精通Java编程语言和对访问数据库和其他服务非常熟悉的开发人员创建的,使用这些标签,Web应用程序开发人员就可以把注意力放到内容的呈现上,而不用费心考虑如何访问企业级服务。就像鼓励将库开发人员和库使用人员的工作分开一样,自定义标签通过封装反复执行的任务使它们可以在多个应用程序中重复使用,从而提高了生产率。
何为自定义标签呢?自定义标签是用户定义的JSP语言元素。当包含自定义标签的JSP页面转换为servlet时,这个标签就转换为一个名为tag handler的对象上的操作。之后当JSP页面的servlet执行时,Web容器就调用这些操作。
这些太麻烦了,直接看看代码就会明白不少~~
我有是个文件(我觉得可以演示自定义标签作用基本的了),
index.jsp 功能:索引页面,用于提交用户输入的用户名和密码
Logon.jsp 功能:通过一个简单的“自定义标签”现实出用户的用户名和密码
util.tld  功能:配置Jsp引擎该如何处理“自定义标签”
TagUtil.java 功能:真正处理用户信息以及显示用户信息所有功能的类
说道这里我要介绍实现“自定义标签”所需要的类和接口
好了所需要的类和接口都看到了,大家一起看一下代码来一步一步的分析这些接口和类的作用。
非常简单的index.jsp页面
显示用户信息的Logon.jsp(名字是我之前做另外一个试验是的,没有改过来请见谅叫viewinfo.jsp比较好)
其中比较重要的是这一句
下面是util.tld文件,这是“自定义标签”和Jsp引擎通信所必须的文件下面是实现标签功能的类TagUtil.java所有的代码都在这里,还要再把关于下面是BodyTagSupport类的方法,这个类实现了Tag、BodyTag和InterationTag接口便于我们直接使用所有功能

javax.servlet.jsp.tagext
Class BodyTagSupport

javax.servlet.jsp.tagext.BodyTagSupport
All Implemented Interfaces:
BodyTag, IterationTag, JspTag, Serializable, Tag

一个成员变量bodyContent
Field Summary
protected  BodyContent bodyContent
          The current BodyContent for this BodyTag.
方法
Method Summary
 int doAfterBody()
          After the body evaluation: do not reevaluate and continue with the page.
 int doEndTag()
          Default processing of the end tag returning EVAL_PAGE.
 void doInitBody()
          Prepare for evaluation of the body just before the first body evaluation: no action.
 int doStartTag()
          Default processing of the start tag returning EVAL_BODY_BUFFERED.
 BodyContent getBodyContent()
          Get current bodyContent.
 JspWriter getPreviousOut()
          Get surrounding out JspWriter.
 void release()
          Release state.
 void setBodyContent(BodyContent b)
          Prepare for evaluation of the body: stash the bodyContent away.
此时我们还要用到BodyContent这个类,这个类包装了JspWriter,BodyContent类的内部存放了我们标签体中间的内容如:
<tony:tag>标签体中的内容</tony:tag> 
我们可以调用BodyContent类的getString方法来得到标签体中的内容。

javax.servlet.jsp.tagext
Class BodyContent

javax.servlet.jsp.tagext.BodyContent

BodyContent的方法
Method Summary
 void clearBody()
          Clear the body without throwing any exceptions.
 void flush()
          Redefined flush() so it is not legal.
 JspWriter getEnclosingWriter()
          Get the enclosing JspWriter.
abstract  Reader getReader()
          Return the value of this BodyContent as a Reader.
abstract  String getString()
          Return the value of the BodyContent as a String.
abstract  void writeOut(Writer out)
          Write the contents of this BodyContent into a Writer.
还有一个接口就是Interface DynamicAttributes 这个接口的功能是用户可以随意设置标签的参数和值,也叫动态参数

javax.servlet.jsp.tagext
Interface DynamicAttributes


这个接口只有一个方法
Method Summary
 void setDynamicAttribute(String uri, String localName, Object value)
          Called when a tag declared to accept dynamic attributes is passed an attribute that is not declared in the Tag Library Descriptor.
下面看一下运行的结果
使用了自定义标签后打印出了提交的“人员信息”。
在下一篇中我将详细介绍这些功能是如何实现的,并且说明tld文件的属性配置情况。

深入浅出自定义标签(一)入门相关推荐

  1. 深入浅出自定义标签(二)生成javascript

    自从写了深入浅出自定义标签(一)入门 之后一直没有得出时间继续写,正好这次项目中用到"自定义标签",这次的用途是通过Session中的存储的相关功能点的List,进行迭代生成jav ...

  2. 转载:javaweb学习总结(二十三)——jsp自定义标签开发入门

    javaweb学习总结(二十三)--jsp自定义标签开发入门 转自:http://www.cnblogs.com/xdp-gacl/p/3916734.html 一.自定义标签的作用 自定义标签主要用 ...

  3. javaweb学习总结(二十三)——jsp自定义标签开发入门

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  4. JSP自定义标签开发入门

    一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...

  5. javaweb学习总结(二十三):jsp自定义标签开发入门

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  6. 自定义标签 (转载)

    转自:http://www.cnblogs.com/zhaoyang/archive/2011/12/25/2301108.html JSP自定义标签开发入门 JSP自定义标签开发入门 一般情况下开发 ...

  7. JSP自定义标签之简单标签入门

    在sun官方文档上有下面这样一段话. 官方文档声明 public interface SimpleTag extends JspTag Interface for defining Simple Ta ...

  8. 如何使用jsp自定义标签 JspTag 使用入门

    java开发中,sturts标签和c标签就是我们常用的两种标签,本文主要教大家如何定义自己的标签,已达到代码整合,公共化的目的.通过jsp自定义标签,可以将一个元素,或者一个表格,一个div甚至整个页 ...

  9. JSP自定义标签入门实例

    jsp标签取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员. 首先在eclipse下新建一个动态web工程 1,在</web-app>之前加入     ...

最新文章

  1. SEO优化:网站优化的五大步骤
  2. VS2017 按ctrl+f5执行程序窗口依然一闪而过的问题(图文)
  3. [iphone]XML 解析 之 TBXML 介绍
  4. echarts控制只显示部分数据的折线图_Python数据可视化之pyecharts入门
  5. VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
  6. int*与(int*)的差别
  7. 计算机科学讨论,第七章计算机科学讨论报告
  8. 垃圾收集器Serial 、Parallel、CMS、G1
  9. 03-对图像进行数值计算和加权融合
  10. c语言学习-定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放
  11. tree(2018.10.26)
  12. @Target({ElementType.METHOD, ElementType.TYPE})
  13. ROS安装时rosdep init与rosdep update问题解决方法(2022.04.08亲测)
  14. java封装的注意事项_新手学习Java之对象---封装
  15. 压缩解压缩工具之WinRAR
  16. 探讨职业化的表达方式
  17. 刀塔传奇战斗系统分析
  18. 表格自动填充上一行_如何在Google文档电子表格上使用自动填充[快速提示]
  19. ensp 移动主机搜索不到AP信道_有颜值更有才华,乘风破浪的天融信面板AP接受硬核实测...
  20. 2022-03-11 工作记录--PHP-eq(表示等于)、 neq(表示不等于)

热门文章

  1. Exchange 2007 的邮件监控器
  2. 模拟 ZOJ 3878 Convert QWERTY to Dvorak
  3. 我对序列化(Serializable)的理解
  4. Windows Server 2008 多元密码策略之ADSIEDIT
  5. BCH的压力测试其实已经开始了
  6. XXL-REGISTRY v1.0.2 发布,分布式服务注册中心
  7. iOS 11.3立春后发布,电量用得快的人千万别升级!
  8. [译][python]ImportError:attempted relative import with no known parent package
  9. 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键...
  10. 七牛访谈|秒拍&小咖秀CTO汤力嘉:产品的生存系于技术