由浅到深详细讲解JSP自定义标签

上传人:飞*** 文档编号:40575108 上传时间:2018-05-26 格式:DOC 页数:7 大小:40.50KB
返回 下载 相关 举报
由浅到深详细讲解JSP自定义标签_第1页
第1页 / 共7页
由浅到深详细讲解JSP自定义标签_第2页
第2页 / 共7页
由浅到深详细讲解JSP自定义标签_第3页
第3页 / 共7页
由浅到深详细讲解JSP自定义标签_第4页
第4页 / 共7页
由浅到深详细讲解JSP自定义标签_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《由浅到深详细讲解JSP自定义标签》由会员分享,可在线阅读,更多相关《由浅到深详细讲解JSP自定义标签(7页珍藏版)》请在金锄头文库上搜索。

1、一、基本概念一、基本概念1、标签(Tag)标签是一种 XML 元素,通过标签可以使 JSP 网页变得简洁并且易于维护,还可以方便地实现同一个 JSP 文件支持多种语言版本。由于标签是 XML 元素,所以它的名称和属性都是大小写敏感的。2、标签库(Tag library)由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。 3、标签库描述文件(Tag Library Descriptor)标签库描述文件是一个 XML 文件,这个文件提供了标签库中类和 JSP 中对标签引用的映射关系。它是一个配置文件,和 web.xml 是类似的。 4、标签处理类(Tag Handle Class)标签处

2、理类是一个 Java 类,这个类继承了 TagSupport 或者扩展了 SimpleTag 接口,通过这个类可以实现自定义 JSP 标签的具体功能。二、自定义二、自定义 JSPJSP 标签的格式标签的格式1、为了使到 JSP 容器能够使用标签库中的自定义行为,必须满足以下两个条件:1)从一个指定的标签库中识别出代表这种自定义行为的标签;2)找到实现这些自定义行为的具体类。第一个必需条件找出一个自定义行为属于那个标签库是由标签指令的前缀(Taglib Directives Prefix)属性完成,所以在同一个页面中使用相同前缀的元素都属于这个标签库。每个标签库都定义了一个默认的前缀,用在标签库

3、的文档中或者页面中插入自定义标签。所以,你可以使用除了诸如 jsp,jspx,java,servlet,sun,sunw(它们都是在 JSP 白皮书中指定的保留字)之类的前缀。 uri 属性满足了以上的第二个要求。为每个自定义行为找到对应的类。这个 uri 包含了一个字符串,容器用它来定位 TLD 文件。在 TLD 文件中可以找到标签库中所有标签处理类的名称。2、当 web 应用程序启动时,容器从 WEB-INF 文件夹的目录结构的 META-INF 搜索所有以.tld 结尾的文件。也就是说它们会定位所有的 TLD 文件。对于每个 TLD 文件,容器会先获取标签库的 URI,然后为每个 TLD

4、 文件和对应的 URI 创建映射关系。在 JSP 页面中,我们仅需通过使用带有 URI 属性值的标签库指令来和具体的标签库匹配。三、自定义三、自定义 JSPJSP 标签的处理过程标签的处理过程1、在 JSP 中引入标签库2、在 JSP 中使用标签库标签3、Web 容器根据第二个步骤中的 prefix,获得第一个步骤中声明的 taglib 的 uri 属性值 4、Web 容器根据 uri 属性在 web.xml 找到对应的元素 5从元素中获得对应的元素的值 6Web 容器根据元素的值从 WEB-INF/目录下找到对应的.tld 文件 7从.tld 文件中找到与 tagname 对应的元素 8凑元

5、素中获得对应的元素的值 9Web 容器根据元素的值创建相应的 tag handle class 的实例 10. Web 容器调用这个实例的 doStartTag/doEndTag 方法完成相应的处理。四、创建和使用一个四、创建和使用一个 TagTag LibraryLibrary 的基本步骤的基本步骤1、创建标签的处理类(Tag Handler Class) 2、创建标签库描述文件(Tag Library Descrptor File) 3、在 web.xml 文件中配置元素 4.在 JSP 文件中引人标签库 五、五、TagSupportTagSupport 类简介类简介1、处理标签的类必须扩

6、展 javax.servlet.jsp.TagSupport。2、TagSupport 类的主要属性:A.parent 属性:代表嵌套了当前标签的上层标签的处理类;B.pageContex 属性:代表 Web 应用中的 javax.servlet.jsp.PageContext 对象;3、JSP 容器在调用 doStartTag 或者 doEndTag 方法前,会先调用 setPageContext 和setParent 方法,设置 pageContext 和 parent。因此在标签处理类中可以直接访问pageContext 变量;4、在 TagSupport 的构造方法中不能访问 page

7、Context 成员变量,因为此时 JSP 容器还没有调用 setPageContext 方法对 pageContext 进行初始化。#p#六、六、TagSupportTagSupport 处理标签的方法处理标签的方法1、TagSupport 类提供了两个处理标签的方法: public int doStartTag() throws JspException public int doEndTag() throws JspException 2、doStartTag:但 JSP 容器遇到自定义标签的起始标志,就会调用 doStartTag()方法。 doStartTag()方法返回一个整数值,

8、用来决定程序的后续流程。 A.Tag.SKIP_BODY:表示?之间的内容被忽略;B.Tag.EVAL_BODY_INCLUDE:表示标签之间的内容被正常执行。3、doEndTag:但 JSP 容器遇到自定义标签的结束标志,就会调用 doEndTag()方法。doEndTag()方法也返回一个整数值,用来决定程序后续流程。 A.Tag.SKIP_PAGE:表示立刻停止执行网页,网页上未处理的静态内容和 JSP 程序均被忽略任何已有的输出内容立刻返回到客户的浏览器上。 B.Tag_EVAL_PAGE:表示按照正常的流程继续执行 JSP 网页。七、用户自定义的标签属性七、用户自定义的标签属性如果在

9、标签中还包含了自定义的属性,那么在标签处理类中应该将这个属性作为成员变量,并且分别提供设置和读取属性的方法。 八、创建标签处理类的步骤八、创建标签处理类的步骤1、创建包含 JSP 网页静态文本的文件(即是要替换自定义 JSP 标签的文本);2、在 Web 应用启动时装载静态文本;3、创建标签处理类。九、如何创建包含九、如何创建包含 JSPJSP 网页静态文本的文件网页静态文本的文件1、使用 java.util.Properties 类来存放要替换网页中自定义 JSP 标签的静态文本;2、Properties 类代表了一系列属性的集合,其实例既可以被保存到流中,也可以从流中加载。这些文本以 ke

10、y/value 的形式存放在 WEB-INF 目录下,例如 key=value,在属性列表中这些 key/value 都是 String 类型的。十、十、PropertiesProperties 类的常用类的常用 APIAPI1、setProperty(String key, String value):调用 Hashtable 类的 put 方法添加属性;2、getProperty(String key):获取属性列表中 key 对应的属性值;3、load(InputStream in):从输入流对象 InputStream 中读取属性列表(Properties list);4、store(

11、OutputStream out,String coMMent):使用适当的格式将属性列表的属性对写入输出流对象中,默认使用 ISO-88590-1 编码格式,以行的方式处理输入。属性的 key/value之间以”=、:”配对,以回车、换行分隔 key/value 配对。十一、十一、ServletContextServletContext 类的常用类的常用 APIAPI1、getContext(String uripath):返回服务器中 uripath 所代表的 ServletContext 对象;2、getInitParameter(String name):返回 ServletConfi

12、g 对象中 name 参数的值; 3、getMineType(String file):返回 file 参数代表的文件的 MIME 类型;4、getRequestDispatcher(String path):返回 path 代表的 RequestDispacher 对象; 5、getResourceAsStream(String path):以输入流的形式返回 path 对应的资源,在输入留中对象可以为任意形式的数据,path 参数必须以“/”开始且相对于 Context Root。 十二、如何使用十二、如何使用 ServletContxtServletContxt 读取并保存属性文件读取并

13、保存属性文件1、创建 java.util.Properties 类对象; 2、获取 ServletContext 对象; 3、将属性文件以输入流的形式读入到某个输入流对象中; 4、将输入流对象加载到 Properties 对象中; 5、将 Properties 对象保存到 ServletContext 对象中。 十三、如何在十三、如何在 WebWeb 应用启动时装载静态文本应用启动时装载静态文本1、创建继承了 HttpServlet 类的子类,在 web.xml 中配置这 Servlet 时设置 load-on-startup 属性: someclass somepackage.SomeCla

14、ss1 2、在这个 Servlet 的 init()方法中创建 java.util.Properties 类 3、获取当前 Web 应用的 ServletContext 对象4、将 WEB-INF 目录下的属性文件读入到输入流 InputStream 中: InputStream in = context.getResourceAsString(“WEB- INF/someproperties.properties“);5、将输入流加载到属性对象中 ps.load(in); 6、将属性对象保存到上 context.setAttribute(“attributeName“,ps);#p#十四、如

15、何创建标签处理类十四、如何创建标签处理类 1、引入必需的资源import javax.servlet.jsp.*; import javax.servlet.http.*; import java.util.*; import java.io.*;2、继承 TagSupport 类并覆盖 doStartTag()/doEndTag()方法 3、从 ServletContext 对象中获取 java.util.Properties 对象 4、从 Properties 对象中获取 key 对应的属性值 5、对获取的属性进行相应的处理并输出结果 十五、创建标签库描述文件十五、创建标签库描述文件(Ta

16、g(Tag LibraryLibrary Descriptor)Descriptor)1、标签库描述文件,简称 TLD,采用 XML 文件格式,定义了用户的标签库。TLD 文件中的元素可以分成 3 类: A.标签库元素 B.标签元素 C.标签属性元素 2、标签库元素用来设定标签库的相关信息,它的常用属性有: A.shortname:指定 Tag Library 默认的前缀名(prefix); B.uri:设定 Tag Library 的惟一访问表示符。 3、标签元素用来定义一个标签,它的常见属性有: A.name:设定 Tag 的名字; B.tagclass:设定 Tag 的处理类; C.bodycontent:设定标签的主体(body)内容。1)empty:表示标签中没有 body; 2)JSP:表示标签的 body 中可以加入 JSP 程序代码; 3)tagdependent:表示标签中的内容由标签自己去处理。4、标签属性元素用来定义标签的属性,它的常见属性有: A.name:属性名称;B.required:属性是否必需的,默认为 false;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号