文档章节

JSP

weslie
 weslie
发布于 2015/06/29 13:44
字数 628
阅读 8
收藏 0

一、创建自定义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方法

© 著作权归作者所有

上一篇: Tomcat
下一篇: Servlet
weslie
粉丝 1
博文 51
码字总数 80088
作品 0
虹口
程序员
私信 提问
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
398
1
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
174
0
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
144
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
159
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
44分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
17
0
【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。...

秉心说
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部