`
dou_shini8820
  • 浏览: 80996 次
社区版块
存档分类
最新评论

java自定义标签的开发步骤

 
阅读更多

 在jsp页面记录访问者的IP,可使用如下java代码:

 

<%
String ip = request.getRemoteAddr();
out.print(ip);
%>

 自定义标签的作用就是把jsp上的java代码移植到java文件中。

 

步骤:

1.写一个类来实现上述java代码,这个类要实现Tag接口,通常我们继承tagSupport这个类,

这个接口里有doStartTag().doEndtag(),setPageContext()等方法,当tomcat编译jsp页面开始一个标签时就执行doStartTag中的方法,setPageContext()在这之前把jsp上的page传递给“标签处理器类”了,也就意味我们可以获得request等对象了。

 

2.对于自定义标签我们需要一个描述标签意义的文件,这个文件是放在WEB-INF下的tld文件。

文件中有<Tag>的描述,需要设置相应的标签处理器类和uri-----以便在jsp页面导入。

 

3.在jsp页面使用taglib引入我们的uri,并指定prefix(通常和tld的文件名相同)。

 

4.在jsp页面使用我们开发的标签<pp:showIP/>

 

 

 

二。开发if。。。else自定义标签

 

首先思考,当jsp页面的if执行了,那么就要通知else这个java类不要执行,因此他们要有个共同的变量来标识,从而需要使用一个父标签来控制这个变量。这就类似与jstl中的

 

<c:choose>
	<c:when test="${user != null}">
		aaaaaaaaaa
	</c:when>
	<c:otherwise>
		bbbbbbbbbbb
	</c:otherwise>
</c:choose>
 

 

1.创建3个类ChooseTag,WhenTag,OtherwiseTag。

ChooseTag:中的isDao用来标识when标签和otherwise标签是否执行了,如果其中任何一个执行了,另外一个就不需要执行了。为了控制when和otherwise,需要doTag,调用getJspBody().invoke(null);

 

 

private boolean isDo;

	public boolean isDo() {
		return isDo;
	}

	public void setDo(boolean isDo) {
		this.isDo = isDo;
	}

	@Override
	public void doTag() throws JspException, IOException {
		this.getJspBody().invoke(null);
	}

 

 

 WhenTag:有一个test变量,是boolean型的,when执行前要判断其父标签的isDo是否为true,不为true且test变量为true时才执行。this.getParent()可以获取父标签,需要强制转换成ChooseTag。

 

when执行了后,要把isDo设置为true。

 

private boolean test;

	public void setTest(boolean test) {
		this.test = test;
	}

	@Override
	public void doTag() throws JspException, IOException {
		ChooseTag parent = (ChooseTag) this.getParent();
		if(test && !parent.isDo()){
			this.getJspBody().invoke(null);
			parent.setDo(true);
		}
	}

  OtherwiseTag:

 

 

@Override
	public void doTag() throws JspException, IOException {
		ChooseTag parent = (ChooseTag) this.getParent();
		if(!parent.isDo()){
			this.getJspBody().invoke(null);
			parent.setDo(true);
		}
	}
 

 

2.在WEB-INF下建luo.tld文件:

 

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>SimpleTagLibrary</short-name>
    <uri>http://baidu.com</uri>
    
    <tag>
        <name>choose</name>
        <tag-class>com.luo.web.tag.ChooseTag</tag-class>
        <body-content>scriptless</body-content>
    </tag>
    <tag>
        <name>when</name>
        <tag-class>com.luo.web.tag.WhenTag</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
        	<name>test</name>
        	<required>true</required>
        	<rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
    <tag>
        <name>otherwise</name>
        <tag-class>com.luo.web.tag.OtherwiseTag</tag-class>
        <body-content>scriptless</body-content>
    </tag>
</taglib>

 其中<body-content>scriptless</body-content>的scriptless包括JSP,表示有标签体,when标签还有个属性test。

3.在jsp最上面引入luo.tld

 

<%@taglib uri="http://baidu.com" prefix="c"%>

uri也可以表示成/WEB-INF/luo.tld 

 

三、打包

1、新建普通java工程,把刚才写的几个tag类连同包一起copy过来,然后再建立META-INF文件夹,把luo.tld copy进去,报错不用管

 

 

2、将工程导出jar格式,其中的.project文件和.classpath不用导

 

分享到:
评论

相关推荐

    java自定义标签教程

    首先,Java自定义标签是一个Java类,它可以实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个接口定义了标签的生命周期方法,如`doStartTag()`和`doEndTag()`,这些方法在标签的生命周期中被容器调用来执行...

    这是本人做的一个很好的Java自定义标签

    根据给定的部分内容,我们可以看到创建Java自定义标签的基本步骤: 1. **创建JAR包**:首先需要将标签处理类打包成JAR文件,例如`jstl.jar`和`standard.jar`等。 2. **编写TLD文件**:TLD文件(Tag Library ...

    java自定义标签、自定义函数、taglib

    在Java Web开发中,自定义标签(Custom Tags)和自定义函数(Custom Functions)是提高代码复用性和可维护性的重要手段。它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务...

    java自定义标签 可运行

    Java自定义标签是Java Web开发中的一个重要特性,它允许开发者创建可重用的代码段,类似于HTML标签,但具有更强大的功能和灵活性。这使得Java Web项目能够实现更高层次的抽象,提高代码的可读性和可维护性,是开发...

    java自定义标签java自定义标签java自定义标签

    总的来说,Java自定义标签是JSP开发中的一个重要部分,它允许开发者创建可重用、模块化的组件,提高了代码的可维护性和复用性。通过理解并熟练掌握自定义标签的创建和使用,可以有效地提升Java Web应用的开发效率和...

    jsp java自定义标签 分页 当前位置 循环遍历数据

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Java自定义标签则是JSP中增强可重用性和模块化的一种方法。本文将深入探讨如何使用Java自定义标签来实现分页功能,当前位置的显示以及数据的...

    一步一步教你写自己的java自定义标签

    通过以上步骤,你已经掌握了创建Java自定义标签的基本流程。实践过程中,你还可以深入研究JSP API文档,理解更多的高级特性和最佳实践,以提升自定义标签的灵活性和性能。不断学习和实践,你将成为一名熟练的Java ...

    java jsp 自定义标签开发

    Java JSP 自定义标签开发是Java Web开发中的一个重要组成部分,它允许开发者扩展JSTL提供的标准标签库,以满足特定的业务需求。JSTL(JavaServer Pages Standard Tag Library)包含四个主要的标签库,分别是核心标签...

    java自定义标签 分页标签 whaosoft 143zh

    创建Java自定义标签通常包括以下几个步骤: 1. **定义标签处理类**:这是自定义标签的核心,需要继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,并覆盖其中的方法来...

    java自定义分页标签

    - 使用TLD(Tag Library Descriptor)文件定义自定义标签的行为和属性。TLD文件是一个XML文档,其中包含标签的元数据,如标签名、方法调用、属性等。 - 创建对应的Java类(Tag Handler)来处理这些标签,这个类...

    java web自定义标签的开发与应用

    李宁老师的《Java Web开发速成宝典》中,详细讲解了自定义标签的创建步骤、实例分析及注意事项,配合《自定义标签的开发与应用.pdf》文件,读者可以深入理解并掌握这一技术。 总结,自定义标签是Java Web开发中的一...

    JAVA自定义标签例子

    总结来说,Java自定义标签的实现涉及创建TLD文件、编写标签处理器类以及在JSP页面中使用。这种机制使得开发者能够构建自己的函数库,提供定制化的功能,从而提高代码复用性和应用程序的可维护性。在本例中,我们学习...

    mybatis自定义标签.zip

    在实际开发中,有时我们需要根据项目需求实现特定的功能,比如动态生成SQL或者进行复杂的业务逻辑处理,这时MyBatis的自定义标签功能就显得尤为重要。 自定义标签是MyBatis框架的一大特色,它允许我们扩展XML映射...

    spring自定义标签例子

    在Spring框架中,自定义标签是一项非常实用的功能,它允许我们创建符合XML语法的自定义元素,以便在配置...自定义标签可以作为扩展Spring功能的一种方式,使我们能够按照自己的需求定制框架行为,从而提升开发效率。

    Freemarker 自定义标签 简单案例

    创建自定义标签通常需要两个步骤: 1. **编写Java类**:你需要定义一个处理自定义标签的Java类,这个类需要继承`freemarker.template.TemplateDirectiveModel`接口,并实现其方法。在这个类中,你可以编写处理逻辑...

    freemarker 自定义freeMarker标签

    在实际开发中,自定义标签可以实现许多高级功能,如数据库查询、缓存管理、国际化处理等。例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容...

    创建JSP自定义标签.doc

    在JavaServer Pages (JSP)开发中,自定义标签是一种强大的工具,可以提高代码的可读性和可维护性。它们允许开发者封装复杂的逻辑或组件为简洁的标签形式,类似于HTML标签。本篇将详细介绍如何创建JSP自定义标签。 ...

    struts2 自定义标签

    三、自定义标签的实现步骤 1. 创建标签库描述文件(TLD,Tag Library Descriptor):这是定义自定义标签的关键文件,用于描述标签的属性、命名空间等信息。例如,`struts-tags.tld`。 2. 编写标签处理类(Tag Class...

    java+web自定义标签的开发与应用

    一、自定义标签的开发步骤 1. **定义标签库(TLD)文件**:TLD(Tag Library Descriptor)文件是自定义标签的元数据,它定义了标签的名称、属性、行为等信息。例如,创建一个名为`myTags.tld`的文件,并在其中声明...

    jsp 自定义标签实例

    创建自定义标签通常涉及以下步骤: 1. **定义标签库描述符文件 (TLD, Tag Library Descriptor)**:TLD是XML格式的文件,用于声明自定义标签及其属性。例如,你可以创建一个名为`mytags.tld`的文件,并在其中定义一...

Global site tag (gtag.js) - Google Analytics