JSP------>JSP标签编程

JSP标签编程

一、概述:

  • 为了进一步减少jsp页面中的scriptlet代码,可以使用jsp标签编程技术来达到目的
  • 就像java语言有很多类库,jsp标签也有标签库:现在许多开源组件都实现了jsp标签库,开发者只需要在自己的project中引入相应的开源组件,就可以直接使用其提供的标签库中的标签进行编程了,其原理和在你的java程序中调用java API 类似。

二、如何定义自己的jsp标签,并形成自己的jsp标签库

概述:(基础知识,必须掌握)

  • 熟悉TagSupport类以及其中的成员方法、常量
  • 了解*.tld  文件

编程思路:(开发自己的jsp标签库)

  • step1,将开发jsp标签所需要的jar包存放至CLASSPATH路径下
      •  
  • step2,编写相应的java类,继承javax.servlet.jsp.tagext.TagSupport类
  • step3,覆写TagSupport类中的相应成员方法,如doStartTag()
  • step4,编写标签描述文件*.tld,在该文件中定义标签名称、简介、处理类、标签使用到的各个属性等
  • step5,在你的project中的web.xml中对所有的*.tld文件进行名称映射
      • 也即在web.xml中对project中将要使用的  所有 jsp标签库  进行名称映射
      • 这样做的好处有很多:
        • 首先,当*.tld的路径较长时,可以减少代码量,因为只需要在web.xml中填写一次完整路径,jsp文件中直接使用web.xml中映射的名称即可引入相应的标签库(即*.tld)      
        • 其次,当*.tld改变时(如名称改变、路径改变等),不需要更改所有引用了该标签库的jsp文件,只需要修改web.xml中相应的映射即可(只需要保证映射名称不变,jsp文件就不需要改变)
  • step6,在jsp文件中引入自定义的“jsp标签库”(即*.tld),由于step5中已经在web.xml中对*.tld文件的路径作了映射,所以这里在jsp文件中引入标签库时不用写出*.tld的完整路径,只需要写出web.xml对该*.tld文件映射的名称即可
  • step7,最后在该jsp页面中使用*.tld中定义的某个或某些标签

三、引入三方开源组件,直接使用别人已经实现了的jsp标签库,引用其中的标签编写自己的jsp文件

概述:

  • 在jsp页面中使用jsp标签可以减少jsp页面中的scriptlet代码,
  • 但是自定义jsp标签库又会十分繁琐
  • 好在有些组织已经开发并且开源了一些jsp标签库,
  • 现在开发者可以直接在自己的project中引入三方组件,然后直接使用这些三方组件中所提供的jsp标签库
  • 并且在jsp文件中使用这些库中所提供的jsp标签

编程思路:

  • step1,下载三方jsp标签库(一个jar包)
    • 现在有很多这样的jsp标签库
    • 本例中使用的是Apache的Jakarta小组开发的JSTL(JSP Standard Tag Library,JSP标准标签库)  
      • 下载网址:http://tomcat.apache.org/taglibs/
      • 下载结果:
  • step2,将step1中下载的jsp标签库(jar包)存放至自己的web project的WEB-INF/lib目录中
  • step3,将step1中下载的jar包使用WINRAR工具打开,将其中的META-INF文件夹下的*.tld文件保存到自己的project的WEN-INF/文件夹下
  • step4,在project的web.xml中配置*.tld的映射路径
  • step5,在自己的*.jsp  文件中引入*.tld,并且使用该文件中所定义的jsp标签

 

四、JSP标签编程的运行机制

  • 如果*.jsp中通过<%@taglib uri=%>引入了标签库(其中uri可以是*.tld文件的路径也可以是web.xml配置的*.tld文件的映射名称)
  • 则web container运行该*.jsp文件时会先根据*.tld的路径查找并解析*.tld文件
  • 如果*.tld中定义的java类已经被加载至JVM,则直接使用
  • 若*.tld中定义的标签对应的java类还没有被加载至JVM,则先加载至JVM,再执行

     



 

posted on 2017-06-27 10:15  LXRM-JavaWeb、ML  阅读(199)  评论(0编辑  收藏  举报

导航