zoukankan      html  css  js  c++  java
  • 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,再执行

     

  • 相关阅读:
    Javascript 面向对象编程
    搜狗2013面试题——求页面中所有单词的个数
    jQuery的ready函数需要注意的细节
    js冒泡排序
    jQuery基本框架解析
    数据结构与算法汇总
    唯美的图片网站
    JavaScript中的setInterval用法
    DOCTYPE
    js实现快速排列
  • 原文地址:https://www.cnblogs.com/lxrm/p/7083703.html
Copyright © 2011-2022 走看看