betway必威-betway必威官方网站
做最好的网站

JSP学习类别之七,Orion下子定义Tag

一、前言 (本文译自Orion官方站点)

一、创设标签
    1. 命名package为: com.acme.mytags
    Package com.acme.mytags;
    2. import相关class
    Import javax.servlet.jsp.*;
    Import javax.servlet.jsp.tagext.*;
    3. 实现javax.servlet.jsp.tagext.Tag接口:
    Public class HelloWorld implements Tag {
    4. 定义局地变量
        Private PageContext pageContent;
        Private Tag parent;
    5. 调用标签初叶的贯彻格局
        Public int doStartTag() throws javax.servlet.jsp.JspException {
            Return SKIP_BODY;
        }
        注意:这么些法子的重临值便是标签的body为空的时候,将赶回那一个值,不然将回到:EVAL_BODY_INCLUDE
    6. 调用标签甘休的落到实处格局
        Public int doEndTag() throws javax.servlet.jsp.JspExcpetion {
            Try {
                pageContent.getOut().write("Hello World!");
            } catch(java.io.IOException e) {
                Throw new JspException("IO Error:" e.getMessage());
            }
            Return EVAL_PAGE;
        }
        那样就要jsp文件的自定义标签结束地点输出"Hello World!"
    7. 还相当不够,大家还要写下边包车型大巴情势:
        Public void release() {} //无需任何完成
    8. JSP的容器要调用上边包车型地铁章程:
        Public void setPageContext(final javax.servlet.jsp.PageContext pageContext) {
            This.pageContext = pageContext;
        }
    9. JSP的器皿还要调用上边包车型客车措施:
        Public void setParent(final javax.servlet.jsp.tagext.Tag parent) {
            This.parent = parent;
        }
    10. 末了,达成方式:
        Public javax.servlet.jsp.tagext.Tag getParent() {
            Return parent;
        }
    }
二、描述标签
    1. 赤手空拳三个taglib.tld文件
    2. Tablib.tld是三个xml格式的文件文件,xml头如下:
        <?xml version="1.0" encoding="ISO-8859-1" ?>
        <!DOCTYPE tablib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" ">
    3. 陈述标签库:
            <taglib>
                <tlibversion>1.0</tlibversion>
                <jspversion>1.1</jspversion>
                <shortname>mt</shortname>
                <uri></uri>
                <info>My first Tag library</info>
    4. 续写标签:
                <tag>
                    <name>Hello World</name>
                    <tagclass>com.acme.mytags.HelloWorld</tagclass>
                    <bodycontent>empty</bodycontent>
                    <info>A Hello World Tag</info>
                </tag>
            </taglib>
三、打包为mytags.jar
目录结构为:
Com/acme/mytags/HelloWorld.class
META-INF/tablib.tld
四、在jsp文件中接纳自定义的竹签:
<%@ taglib uri="mytags.jar" prefix="mt" %>
<mt:helloWorld />

一、基本概念

本文将一步一步介绍在Orion Application Server下定义自个儿的标签,然后,实现该标签的效应,最终用一个jsp例子测量检验。

1、标签(Tag)

二、营造标签,实现该标签的功用。

标签是一种XML成分,通过标签能够使JSP网页变得不难况且易于维护,仍是可以够方便地贯彻同多少个JSP文件补助多样语言版本。由于标签是XML成分,所以它的称号和品质都以深浅写敏感的。

1.命名package为:com.acme.mytags(为了和原来的书文一样,笔者不做改造)

2、标签库(Tag library)

package com.acme.mytags;

由一雨后玉兰片功效相似、逻辑上互相联系的价签构成的聚众称为标签库。

2.import相关class

3、标签库描述文件(Tag Library Descriptor)

import javax.servlet.jsp.*;

标签库描述文件是几个XML文件,这一个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配备文件,和web.xml是相仿的。

import javax.servlet.jsp.tagext.*;

4、标签管理类(Tag Handle Class)

3.实现javax.servlet.jsp.tagext.Tag接口:

标签管理类是三个Java类,那几个类传承了TagSupport可能扩张了SimpleTag接口,通过这几个类能够完结自定义JSP标签的切切实实际效果果。

public class HelloWorld implements Tag

二、自定义JSP标签的格式

{

1、为了使到JSP容器能够运用标签库中的自定义行为,必须满足以下五个标准化:

4.定义局地变量

<% @ taglib prefix=”someprefix” uri=”/sometaglib” %>

private PageContext pageContext;

1)从三个钦点的标签库中分辨出代表这种自定义行为的标签;
2)找达到成那些自定义行为的具体类。

private Tag parent;

先是个必需条件-寻觅多个自定义行为属于极度标签库-是由标签指令的前缀(Taglib Directive's Prefix)属性实现,所以在同一个页面中运用同一前缀的因素都属于这么些标签库。每一个标签库都定义了叁个暗中同意的前缀,用在标签库的文书档案中只怕页面中插入自定义标签。所以,你能够利用除了诸如jsp,jspx,java,servlet,sun,sunw(它们都以在JSP白皮书中钦赐的保留字)之类的前缀。  

5.调用竹签开头的兑现格局

uri属性满足了上述的第二个供给。为各类自定义行为找到相应的类。那么些uri满含了叁个字符串,容器用它来定位TLD文件。在TLD文件中得以找到标签库中颇具标签管理类的名号。

public int doStartTag() throws javax.servlet.jsp.JspException

2、当web应用程序运维时,容器从WEB-INF文件夹的目录结构的META-INF搜索全数以.tld结尾的文书。也便是说它们会稳固有所的TLD文件。对于每种TLD文件,容器会先获取标签库的UEvoqueI,然后为种种TLD文件和呼应的UOdysseyI创立映射关系。

{

在JSP页面中,大家仅需通过利用带有U福特ExplorerI属性值的标签库指令来和求实的标签库相配。

return SKIP_BODY;

三、自定义JSP标签的管理进度

}

1、在JSP中引进标签库

只顾:这么些形式再次回到SKIP_BODY,正是标签的body为空的时候,将回来那一个值,不然将赶回:EVAL_BODY_INCLUDE

<% @ taglib prefix=”taglibprefix” uri=”tagliburi” %>

6.调用竹签甘休的贯彻情势

2、在JSP中采纳标签库标签

public int doEndTag() throws javax.servlet.jsp.JspException

3、Web容器根据第3个步骤中的prefix,获得第二个步骤中扬言的taglib的uri属性值

{

4、Web容器依照uri属性在web.xml找到相应的要素

try

5.从要素中获取相应的因素的值

{

6.Web容器遵照成分的值从WEB-INF/目录下找到相应的.tld文件

pageContext.getOut().write('Hello World!');

7.从.tld文件中找到与tagname对应的要素

}

8.凑元素中收获相应的因素的值

catch(java.io.IOException e)

9.Web容器依照元素的值创建相应的tag handle class的实例

{

  1. Web容器调用这一个实例的doStartTag/doEndTag方法成功相应的管理。

本文由betway必威发布于编程开发,转载请注明出处:JSP学习类别之七,Orion下子定义Tag

TAG标签: betway必威
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。