JSP2自定义标签的使用方法.doc_第1页
JSP2自定义标签的使用方法.doc_第2页
JSP2自定义标签的使用方法.doc_第3页
JSP2自定义标签的使用方法.doc_第4页
JSP2自定义标签的使用方法.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创新教育 服务社会刘政JSP2.0标签使用方法 JSP2.0中标签的使用由多个部分组成: (1) WEB_INF/web.xml中添加标签引用 (在web.xml文件的jsp-config节点中添加)(2) 标签的实现,可能是class也可能是web templet (3) 在jsp文件中添加引用 在实际使用中,分析jsp2.0标签可以先从jsp文件入手,然后再分析web.xml及相应的标签库文件。 2.2 基本标签的使用方法 2.2.1 jsp文件中的标签引用及使用方法 以下是一个简单的jsp文件: 说明: (1) 首先以说明标签前缀及该前缀引用的标签所在路径,在这个例子中uri值是一个相对路径(本地路径),即当前项目根目录下WEB-INF/ jsp2/ jsp2-example-taglib.tld。如果使用的是本地路径就不需要在web.xml中配置路径映射了; (2) 指定了标签前缀后,在jsp页面的body内就可以使用这个前缀来引用标签库中的指定标签了,如,就是引用mytag所指定的标签库中的helloWorld标签。 2.2.2 web.xml中的配置 如果在上述例子中使用的不是本地路径,那么就需要在web.xml中配置路径转换,如使用:来引用标签库,那么就需要在web.xml文件的jsp-config节点中添加如下配置: http:/mytaglib/myTestTags1 /WEB-INF/jsp2/jsp2-example-taglib.tld JSP解释器会将http:/mytaglib/myTestTags1根据web.xml中的配置转化为本地路径。当然中文本可以是任何值,但不能和其它的配置冲突,所以在规划时最好加上前缀,如:http:/mytaglib等。 2.2.3 标签库中的配置 在标签库中的配置实际上就是配置对实现类的引用,JSP解释器会根据jsp文件中对标签的引用,在标签库中找到相应的标签,然后再根据标签中的定 义调用具体的实现类,本例中在jsp文件中对标签的引用:,即引用了helloWorld这个标签, 这个标签在标签库中的定义如下: Outputs Hello, World helloWorld jsp2.examples.simpletag.HelloWorldSimpleTag empty 该标签由四个部分组成: (1) description:描述该标签的作用 (2) name:标签的名字,该名字在jsp文件使用,相当 类名; (3)tag-class:标签的实现索引,相当于类的实现;本例索引指定 jsp2.examples.simpletag.HelloWorldSimpleTag,是一个java的类文件,应放在 WEB_INF/classes/jsp2/examples/simpletag目录下的HelloWorldSimpleTag.class文件; (4) body-content:在jsp文件中使用标签时,标签中的内容类别,本例的值是empty,表示helloWorld这个标签中没有内容。如果在 jsp页面中在该标签中加入了内容,如hell, 页面会报错,当然是不会错的(注意不能有空格 式)。 2.2.4 类的实现 类HelloWorldSimpleTag实现如下: package jsp2.examples.simpletag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class HelloWorldSimpleTag extends SimpleTagSupport public void doTag() throws JspException, IOException getJspContext().getOut().write( Hello, world! ); 说明: (1) jsp标签调用的类一般继承于SimpleTagSupport (2) SimpleTagSupport中实现了getJspContext()这个方法,这个方法可以获取指向jsp页面的输出流。 (3) getJspContext().getOut().write( Hello, world! ):输出Hellow,World! 2.3含有变量的tag配置 2.3.1 jsp文件中的标签引用及使用方法 以下是引用了带有变量标签的jsp页面: Invocation $count of 5 说明: (1) ,输入参数的传入方法:即在标签中将要传入的参数做为标签的一个属性,并指定其属性值,本例中传入参数num1,它的值为15; (2) $count,在页面中显示输出参数的值,count是输出参数的名字 2.3.2 标签库中的配置 标签库中的相应配置如下: Repeats the body of the tag num times repeat jsp2.examples.simpletag.RepeatSimpleTag scriptless-标签内容是脚本 Current invocation count (1 to num) count -输出参数说明 num -输入参数说明 true true 该标签由六个部分组成: (1) description:见上文 (2) name:见上文 (3) tag-class:见上文 (4) body-content:这个例子的值是scriptless,表示标签中的内容是脚本 (5) variable:输出参数,在jsp中使用$count来引用这个输出变量的值,输出参数名并不是强制性的,这里只是一个约定,即要求repeat实现类最后有count这个输出参数,以便在jsp页中方便引用,如果没有也不会报错; (6) attribute:输入参数,在jsp中使用来设置这个输入参数num,这个参数名是强制性的,即要在repeat实现类中有setNum这个方法,如果没有相应的方法jsp页面会报错; 2.3.3 类的实现 package jsp2.examples.simpletag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.util.HashMap; import java.io.IOException; public class RepeatSimpleTag1 extends SimpleTagSupport private int num; public void doTag() throws JspException, IOException for (int i=0; inum; i+) getJspContext().setAttribute(count, String.valueOf( i + 1 ) ); getJspBody().invoke(null); public void setNum(int num) this.num = num; 说明: (1) getJspContext().setAttribute定义了输出到jsp页面的输出参数count,这里的count是一个字符串,它的值可以不与 标签库中variable定义相同,如,它可以是len,当然在jsp引用时应以这里为准,即使用$len引用; (2) setNum(int num)方法:接收输入参数,这个方法命名规则为set+输入参数名,该方法带一个参数,用于接收输入参数的值。 2.4 函数标签的定义方法 2.4.1 jsp文件中函数标签引用及使用方法 $my:caps(“HELLO WORLD”) 说明: (1) 函数标签的引用比其它标签的引用都要简单,它的引用与高级语言中的函数调用方法类似,直接在函数名后的括号后面输入相应的参数值即可,不需要另加用标签的其它属性来说明输入参数。 2.4.2 函数标签在标签库中配置 Converts the string to all caps caps jsp2.examples.el.Functions java.lang.String caps( java.lang.String ) 说明如下: (1) 这种方法的定义包含在function元素中; (2) name:函数名 (3) function-class:该函数真正的实现class,本例中,caps函数是由WEB_INF/classes/ jsp2/examples/el路径中的Functions类来实现的; (4) function-signature:说明函数的输入及输出参数类型,不用指明参数名。 2.4.3 类的实现 package jsp2.examples.el; import java.util.*; public class Functions public static String caps( String text ) return text.toUpperCase(); 说明: (1) 函数标签实现类就是普通的类,它不需要从某个父类继承; (2) 函数标签实现类中必须有相应的方法与标签库中相应的函数字义相同(包括函数名,输入参数个数及输入参数类型,函数的返回值); 2.5 标签模板 标签模板的特点: (1) 没有tld文件在jsp中通过引用,即使用tagdir代替了uri,这里的tags是一个文件夹,不是文件,在该文件夹中包含了所需的标签模板; (2) 通过以下方式传入参数值: . . . (3) displayProducts是与/WEB-INF/tags目录中的某个文件名; (4) 通过来赋值 (5) 标签模板是一个纯文本文件,类似于html文件,而不需要通过java的类来实现标签的定义; (6)标签模板的主要作用重在排版,而其它标签的作用重在功能的实现;自定义标签从图上可以看出结构。接口的实现类:SimpleTagSupport (Jsp2.0)、TagSupport、BodyTagSupport步骤:1、创建标签的处理类(Tag Handler Class) 实现上述类或接口2、创建标签库描述文件(Tag Library Descrptor File) 即 TLD文件1.TagSupport处理标签的方法1、TagSupport类提供了两个处理标签的方法: public int doStartTag() throws JspException public int doEndTag() throws JspException 2、doStartTag:但JSP容器遇到自定义标签的起始标志,就会调用doStartTag()方法。 doStartTag()方法返回一个整数值,用来决定程序的后续流程。 A.Tag.SKIP_BODY:表示?之间的内容被忽略;B.Tag.EVAL_BODY_INCLUDE:表示标签之间的内容被正常执行。3、doEndTag:但JSP容器遇到自定义标签的结束标志,就会调用doEndTag()方法。doEndTag()方法也返回一个整数值,用来决定程序后续流程。 A.Tag.SKIP_PAGE:表示立刻停止执行网页,网页上未处理的静态内容和JSP程序均被忽略任何已有的输出内容立刻返回到客户的浏览器上。 B.Tag_EVAL_PAGE:表示按照正常的流程继续执行JSP网页。定义标签类,实现 TagSupport类:public class TagSupport_Demo extends TagSupport /* * 标签的自定义实现 TagSupport */private PageContext page=null;private int intNumber;/该变量为标签里的属性;public int getIntNumber() return intNumber;public void setIntNumber(int intNumber) Number = intNumber;Overridepublic int doEndTag() throws JspException /对标签处理后 其他的JSP 内容的处理try for(int i=0;iintNumber;i+)page.getOut().print(标签的使用); catch (IOException e) e.printStackTrace();return EVAL_PAGE ; /JSP继续执行该标签后的内容Overridepublic int doStartTag() throws JspException /对标签内容的处理/ TODO 自动生成方法存根return SKIP_BODY ; /不计算该标签之间的内容public void setPageContext(PageContext pc)this.page=pc;创建标签库描述文件(Tag Library 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; C.rtexprvalue:属性值是否可以为request-time表达式,也就是类似于的表达式。 用户标签 S9 1.0 1.2 Q 该标签为自己定义的标签,功能为: Qhit com.hy.TagSupport_Demo jsp intNumber java.lang.Integer true 在页面中使用标签:二、带标签内容的/* * 计算带标签内容的 自定义标签 */public class Tag_Include_tag extends BodyTa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论