JSP

一、创建自定义JSP标签

       (1) 创建标签的处理类,该类必须扩展以下俩个类之一:

             javax.servlet.jsp.tagext.TagSupport

                   主要方法:

                          doStartTag 当Servlet容器遇到自定义标签的起始标志时会调用该方法,会返回整数常量,用来决定程序的后续流程,常量有俩个可选值:

                                               -  Tag.SKIP_BODY 表示标签之间的内容被忽略

                                               -  Tag.EVAL_BODY_INCLUDE表示标签之间的内容被正常执行

                          doEndTag 当Servlet容器遇到自定义标签的结束标志时会调用该方法,会返回整数常量,用来决定程序的后续流程,常量有俩个可选值:

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

                                               - Tag.EVAL_PAGE表示按正常的流程继续执行JSP网页

                          setValue(String k,Object,o)在标签处理类中设置key / value

                          getValue(String k)在标签处理类中根据参数key返回匹配的value

                          removeValue(String k)在标签处理类中删除key / value

                          setPageContext(PageContext pc)设置PageContext对象,该方法由Servlet容器在调用doStartTag或doEndTag方法前调用

                                                     PageContext代表Web应用中的javax.servlet.jsp.PageContext对象

                          setParent(Tag t)设置嵌套了当前标签的上层标签的处理类,该方法由Servlet容器在调用doStartTag或doEndTag方法前调用

                          getParent( )返回嵌套了当前标签的上层标签的处理类


                         JSP容器在调用doStartTag或doEndTag方法前,会先调用setPageContext 和 setParent方法,设置pageContext和parent。

                         因此在doStartTag或doEndTag方法可以通过getParent方法获取上层标签的处理类;

                         在TagSupport类中定义了protected类型的pageContext成员变量,因此在标签处理类中可以直接访问pageContext(页面上下文对象)

             javax.servlet.jsp.tagext.BodyTagSupport   // 父类是TagSupport

          

         

       (2) 创建标签库描述文件,该文件是一个tld文件。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
	"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<!-- a tag library descriptor -->
<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>mytaglib</shortname>
	<uri>/mytaglib</uri> //标签库uri的名字

	<tag>
		<name>hello</name>
		<tagclass>com.jsp.tag.HelloTag</tagclass>
		<bodycontent>empty</bodycontent>
	</tag>
	<tag>
		<name>message</name>
		<tagclass>com.jsp.tag.MessageTag</tagclass>
		<bodycontent>empty</bodycontent>
		<attribute>
			<name>key</name>
			<required>true</required>
		</attribute>
	</tag>
</taglib>

       (3) 在JSP文件中引入标签库,然后插入标签。

       (4) 自定义标签属性

              在标签处理类中应该将这个属性作为成员变量,并且提供GET和SET方法

你可能感兴趣的:(JSP)