`

自定义(客户化)标签库详解

    博客分类:
  • jsp
jsp 
阅读更多
标签库的作用和EL表达式的作用差不多,尽量减少jsp页面上的java代码量。

客户化JSP标签技术是在JSP1.1版本中才出现的,它支持用户在JSP文件中自定义标签,这样可以是JSP代码更加简洁。

这些可重用的标签能处理复杂的逻辑运算和事务,或者定义JSP网页的输出内容和格式。

创建客户化(自定义)JSP标签的步骤:
1、 创建标签的处理类。
2、 创建标签库描述文件。
3、 在JSP文件中引入标签库,然后插入标签,例如:<mm:hello/>

Servlet容器编译JSP网页时,如果遇到自定义标签,就会调用这个标签的处理类。

标签处理类必须扩展以下两个类之一:
--javax.servlet.jsp.tagext.TagSupport
--javax.servlet.jsp.tagext.BodyTagSupport

标签处理类(器)都需要扩展以上两个类中的一个,然后重写里面的一些方法即可。

其中两个最重要的方法:
Pulbic int doStartTag()…..:默认的开始标签的处理,返回一个int型的SKIP_BODY。
Pulbic int doEndTag()…..:结束标签的默认处理,返回一个int型的EVAL_PAGE。



总结:
doStartTag:Servlet容器遇到自定义标签的起始标志时调用该方法。
doEndTag:Servlet容器遇到自定义标签的结束标志时调用该方法。



TagSupport类的其它的一些方法:
setValue(String k,Object o):在标签处理类中设置key/value
getValue(String k):在标签处理类中根据参数key返回匹配的value
removeValue(String k,):在标签处理类中出key/value
setPageContext(PageContext pc):设置PageContext对象,该方法由Servlet容器在调用doStartTag或doEndTag方法前调用
setParent(Tag t):设置嵌套了当前标签的上层标签的处理类,该方法由Servlet容器在调用doStartTag或doEndTag方法前调用。
getParent():返回嵌套了当前标签的上层标签的处理类。


JSP容器在调用doStartTag或doEndTag方法前,会先调用setPageContext和setParent方法,设置pageContext和parent。
在doStartTag或doEndTag方法中可以通过getParent方法获取上层标签的处理类;在TagSupport类中定义了Protected类型的pageContext成员变量,因此在标签处理类中可以直接访问pageContext变量。


PageContext类提供了保存和访问Web应用的共享数据的方法:
--public void setAttribute(String name,Object value, int scope)
--public Object geAttribute(String name, int scope)

其中,scope参数用来指定属性存在的范围,它的可选值包括:
--PageContext.PAGE_SCOPE
--PageContext.REQUEST_SCOPE
--PageContext.SESSION_SCOPE
--PageContext.APPLIACTION_SCOPE

例如:pageContext.setAttribute(“username”,”zhangsan”, PageContext.SESSION_SCOPE)


当Servlet容器遇到自定义标签的起始标志,就会调用doStartTag()方法。
doStartTag()方法返回一个整数值,用来决定程序的后续流程。它有两个可选值:
--Tag.SKIP_BODY
--Tag.EVAL_BODY_INCLUDE


当Servlet容器遇到自定义标签的结束标志,就会调用doEndTag()方法。
doEndTag()方法也返回一个整数值,用来决定程序后续流程。它有两个可选值:
-- Tag.SKIP_PAGE
--Tag.EVAL _PAGE


Tag.SKIP_PAGE表示立刻停止执行JSP网页,网页上未处理的静态内容和JSP程序均被忽略,任何已有的输出内容立刻返回到客户的浏览器上。
Tag.EVAL _PAGE表示按正常的流程继续执行JSP网页。


在标签中还能包含自定义的属性,例如:
<prefix:mytag username=”zhangsan”>
……
……
</prefix:mytag>


在标签处理类中应该将这个属性作为成员变量,并且分别提供设置和读取属性的方法,假定以上username为String类型,可以定义如下方法:
private String username;
public void setUsername(String value){
this.username = value;
}
public String getUsername(){
return username;
}
作用:通过设置这些属性的值来去决定标签里面应该怎么处理怎么去执行,标签提供这些属性之后,我在标签处理类里面就能获得这些属性值,根据属性值来决定应该怎么做。

作业:定义一个名为mytaglib的标签库,它包含一个简单的hello标签,这个标签能够将JSP页面中所有的<mm:hello/>解析为字符串”hello”。

标签库描述文件的后缀名是tld。而且必须存放在和web.xml存放在同一个目录下,必须在WEB-INF下面。


作业2:创建一个能替换test应用中JSP网页的静态文本的标签,这个标签名为message,它放在mytaglib标签库中。(开发一个项目需要被多个国家的用户同时使用的时候用到这样的情况)

上面两个作业的答案都在附件项目里面



分享到:
评论

相关推荐

    jsp 自定义标签

    ### JSP自定义标签详解 #### 一、引言与作用 JSP(Java Server Pages)自定义标签是JSP 1.1版本后引入的一个重要特性,它允许开发者创建可复用的组件,使JSP页面代码更加清晰、模块化。通过自定义标签,可以封装...

    孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar

    孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar 01__JavaWeb应用简介.pdf 02_Servlet技术.pdf 03_JSP...自定义客户化标签.pdf 08_开发Java Mail Web.pdf 09_Soap服务.pdf tomcat_chapter2.pdf

    客户管理,打印报表,自定义报表,报表设计,复杂报表

    本文将围绕“客户管理”、“打印报表”、“自定义报表”、“报表设计”以及“复杂报表”这五个核心标签,详细探讨这些功能在实际应用中的重要性及实现方式。 首先,客户管理是企业运营的关键环节,它涵盖了客户信息...

    仓库管理表格

    同时,"源码"标签暗示可能还包含了用于自动化或扩展功能的VBA(Visual Basic for Applications)代码,这些代码可以自定义操作,如自动更新库存、生成库存预警等。 三、仓库管理表格详解 1. **库存清单**:此表格...

    thinkphp5多标签后台源码

    《ThinkPHP5多标签后台源码详解》 ThinkPHP5是一款基于PHP的轻量级、高性能的开源框架,被广泛应用于各类Web应用的开发。它以其简洁的代码、高效的性能和丰富的功能,深受开发者喜爱。在本文中,我们将深入探讨一款...

    aaaaa.rar_delphi 客户_客户 管理 系统_客户管理_客户管理系统

    2. 客户分类与标签:通过设置自定义字段或标签,可以对客户进行分类,便于针对性的服务和营销。Delphi的数据绑定机制可以轻松实现数据的分类显示和检索。 3. 联系日志:系统需具备跟踪与客户交互的记录,如通话、...

    wordpress插件SEO Title Tag(个性化浏览器title)

    **WordPress 插件SEO Title Tag详解** WordPress是一个强大的开源内容管理系统,被广泛用于构建网站。在SEO(搜索引擎优化)方面,WordPress提供了丰富的插件来帮助用户优化网站的可见性和排名。"SEO Title Tag...

    呼叫中心OA系统管理模板 AM工作台+客户管理+工单管理+知识库等模块

    此外,还可以进行客户分类、标签化管理,便于进行精准营销和服务。 3. **工单管理**: 工单管理模块用于跟踪和解决客户问题。当接到客户请求时,系统自动生成工单,记录问题详情,并分配给相应人员处理。工单状态...

    Vip客户信息管理系统

    系统应支持自定义标签,以便于对VIP客户进行个性化管理。 再者,**权限管理**是保证信息安全的关键。系统应设定不同级别的操作权限,例如,普通员工可能只能查看和修改基本信息,而管理层则可以访问更敏感的数据,...

    用友U9-自定义单据(初级).pdf

    ### 用友U9自定义单据(初级)知识点详解 #### 一、课程概览与背景 **标题与描述解读:**“用友U9-自定义单据(初级)”这一标题揭示了课程主要面向初学者,旨在教授如何在用友U9平台上进行自定义单据的开发。描述...

    服装行业的-仓库管理系统

    2. 打印标签:服装商品通常需要明确的标识,系统提供的打印标签功能,能够自定义设计并打印出包含条形码或二维码的商品标签,便于入库、出库和盘点操作。 3. 入库管理:系统支持商品的入库登记,包括接收订单、验货...

    Professional Servlets and JSP The J2EE Web Tier

    自定义标签库能够帮助开发者创建可重用的代码组件,增强代码的模块化。过滤器是一种在请求处理链中拦截请求与响应的组件,用于执行预处理和后处理任务,比如安全检查、日志记录和数据压缩。而设计模式部分则介绍了在...

    visual foxpro 客户管理系统

    1. 客户信息管理:该模块用于存储和维护客户的基本信息,包括姓名、联系方式、地址、购买历史等,同时支持客户分类和标签化管理。 2. 销售订单管理:记录每次销售交易的详细信息,包括产品、数量、价格、日期等,...

    CMS.rar_load26u_shape482_基于delphi开发的客户信息管理系统

    《基于Delphi开发的客户信息管理系统详解》 在IT领域,开发高效且用户友好的管理信息系统是企业运营的重要环节。本文将围绕“CMS.rar_load26u_shape482_基于delphi开发的客户信息管理系统”这一主题,深入探讨其...

    企业客户资源管理系统

    1. 客户信息管理:系统允许企业录入、修改和删除客户的基本信息,包括姓名、联系方式、公司信息等,同时支持对客户进行分类和标签化,以便于后期的数据分析和市场细分。 2. 销售跟踪:通过记录每一次与客户的交互,...

    [毕业设计]asp.net企业客户管理系统cms系统.zip

    7. 客户分类:通过自定义字段和标签,系统可能实现了客户分组和分类功能,便于进行差异化营销和服务。 8. 跟进记录:系统可能有日志记录功能,记录每次与客户的交互,以便员工了解历史沟通情况,持续跟进。 9. ...

Global site tag (gtag.js) - Google Analytics