`
234390216
  • 浏览: 10197158 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:461015
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1772123
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1395776
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:394004
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678359
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529415
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178985
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:462548
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:150282
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66976
社区版块
存档分类
最新评论

jsp自定义标签和方法

    博客分类:
  • jsp
阅读更多

 

首先是要有一个标签处理类,标签处理类可以直接实现Tag接口,也可以继承JAVA中已经实现了的TagSupport这个类,TagSupport也是继承自Tag接口的,它内部已经对Tag接口进行了实现,一般是继承TagSupport类,之后是重写父类的doStartTag和doEndTag方法,

对于开始标签来说返回值主要有EVAL_BODY_INCLUDE和SKIP_BODY,前者表示执行标签体,后者表示略过标签体;

对于结束标签的返回值主要有两种EVAL_PAGE和SKIP_PAGE,前者表示继续执行结束标签以后的内容,后者表示忽略结束标签以后的内容;另外,在继承自TagSupport类的标签处理类里面还有两个隐含的属性,一个是parent,表示该标签上层标签的处理类,另外一个是pageContext,pageContext是为了方便我们使用的WEB元素而引入的一个属性,像HttpSession之类的;实现了Tag接口的类也可以使用这两个隐含属性,只需要实现其中的setParent()方法和setPageContext()方法就可以了。

下面是一个标签处理类的代码式样:

public class MyTag extends TagSupport {

private String prop1;
private String prop2;

	/**
	 * 
	 */
	private static final long serialVersionUID = -8771409930058657336L;
	
	@Override
	//对于结束标签的返回值主要有两种EVAL_PAGE和SKIP_PAGE,前者表示继续执行结束标签以后的内容,后者表示忽略结束标签以后的内容;
	public int doEndTag() throws JspException {
		// TODO Auto-generated method stub
//这里面可以处理自己的逻辑,然后选择返回值,如果不处理,调用super.doEndTag()则会返回EVAL_PAGE
//		return EVAL_PAGE;
//		return SKIP_PAGE;
		return super.doEndTag();
	}

	@Override
	/**
	 * 对于开始标签来说返回值主要有EVAL_BODY_INCLUDE和SKIP_BODY,前者表示执行标签体,后者表示略过标签体
	 */
	public int doStartTag() {
		// TODO Auto-generated method stub
//同样这里面也是执行自己的逻辑,然后来决定是要显示标签体
//可以使用两个内部属性,parent和pageContext
		if (yourCondition)
			return EVAL_BODY_INCLUDE;
		else
			return SKIP_BODY;
	}
//省略get和set方法
}

 

 

接下来是要在WEB-INF下面新建.tld文件,名称随便取,这个tld文件是对标签库的描述,包括该标签库里面包括哪些标签和和方法,以及对标签属性等的描述,有了这个文件以后,在WEB服务器启动的时候,系统就会将该文件加载,然后当在页面上使用该标签库的时候系统就会到已经在WEB-INF目录下加载的tld文件里面去找相应的标签库,如果没有则会出错!

下面是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">
    
  <tlib-version>1.0</tlib-version><!-- 版本号 -->
  <short-name>my</short-name><!-- 名称随便取 -->
  <uri>http://www.test.com/core</uri><!-- 这个uri即在页面上进行引入的时候的uri -->
  
  <function><!-- 这是对方法的定义,对方法的定义比较简单,只要该方法是公共的并且是静态的就可以了,该类也不需要继承什么类和接口 -->
    <name>funcTest</name><!-- 方法名 -->
    <function-class>com.test.util.Util</function-class><!-- 方法所在的类 -->
    <!-- 方法的一些信息,boolean表示返回类型, funcName表示方法名,后面是参数类型,对于其他非基本类型的数据一定要用全称,如java.lang.String-->
    <function-signature>boolean funcName(int,int,int)</function-signature>
  </function>
  
  <tag>
  	<name>tagName</name><!-- 标签名称,在使用的时候以前缀加这个名称使用的 -->
  	<tag-class>com.test.web.tag.MyTag</tag-class><!-- 标签类 -->
  	<attribute>
  		<name>prop1</name><!-- 标签类里面的属性名称 -->
  		<required>true</required><!-- 是否必须有 -->
  	</attribute>
  	<attribute>
  		<name>prop2</name>
  		<required>true</required>
  	</attribute>
  </tag>
</taglib>

 

之后就可以在页面上直接引入该标签库使用自定义的标签了:

如:

<%@taglib prefix="my" uri="http://www.test.com/core" %>
//使用<my:myTag prop1="" prop2="">content</my:myTag>

 

对于自定的方法的使用则是要利用jstl来使用:

在导入了jstl的标签以后,可以这样使用:

${my:funcName(arg0,arg1,arg2)},这个参数的类型是需要匹配的,

0
3
分享到:
评论

相关推荐

    JSP自定义标签JSP自定义标签

    JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签

    jsp自定义标签jsp自定义标签jsp自定义标签

    jsp自定义标签jsp自定义标签jsp自定义标签

    Jsp自定义标签和方法详解

    Jsp自定义标签和方法详解 首先是要有一个标签处理类,标签处理类可以直接实现Tag接口,也可以继承Java中已经实现了的TagSupport这个类,TagSupport也是继承自Tag接口的,它内部已经对Tag接口进行了实现,一般是继承...

    JSP自定义标签学习笔记

    本人自行研究JSP自定义标签的学习笔记 目录如下: 目录 一、概述 1 1.1 使用简单标签机制 2 1.2 使用标签文件 3 二 、自定义标签简介 3 2.1 自定义标签概念 3 2.2 标签相关概念 3 2.3 如何创建自定义标签 3 三、自...

    jsp自定义标签 jsp自定义标签

    jsp自定义标签jsp自定义标签jsp自定义标签jsp自定义标签

    jsp 自定义标签实例

    jsp 自定义标签 一个简单的自定义标签实现

    jsp权限控制,jsp自定义标签实现

    使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...

    jsp自定义标签报错的问题

    在网上学习jsp自定义标签的时候, 出现了异常, 在网上寻找了好久, 都没有找到合适的答案, 自己通过摸索最后成功, 分享给大家, 希望能够帮助到你, 自定义标签不能放在java Project中, 只能在java web Project中才可以.

    创建JSP自定义标签.doc

    创建JSP自定义标签.doc 创建JSP自定义标签.doc 创建JSP自定义标签.doc

    java jsp自定义标签非常好用大家下载学习

    java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp...

    JSP自定义标签:最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例

    JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。 标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。 标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎...

    JSP自定义Table标签demo

    JSP自定义Table标签demo JSP自定义Table标签demo JSP自定义Table标签demo

    jsp自定义迭代标签

    jsp自定义迭代标签 jsp自定义迭代标签

    jsp自定义标签-比较强大的

    jsp、jstl自定义标签实现的分页,实现的还是比较好的,没有在request、session等范围保存过数据,在pageContext范围内保存过集合的数据, 实现的方法还是比较简单的,适用性还是比较广的,我是实在是没分了,平时也...

    jsp自定义嵌套标签

    jsp自定义嵌套标签 自定义嵌套标签的定义和使用

Global site tag (gtag.js) - Google Analytics