zoukankan      html  css  js  c++  java
  • JSP自定义标签Taglib实现过程重点总结

    JSP自定义标签Taglib实现过程重点总结

    作者:

    Taglib指令,其实就是定义一个标签库以及自定义标签的前缀,其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,感兴趣的朋友可以了解下,或许对你学习jsp有所帮助

    Taglib指令介绍

    Taglib指令,其实就是定义一个标签库以及自定义标签的前缀。

    比如struts中支持的标签库,html标签库、bean标签库、logic标签库。

    其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,后面会大家介绍相应的学习资料。

    除了struts的标签库,我们常见还有jstl标签库。

    这样在界面jsp中引入其中的标签库或者标签库文件,然后才可以正常使用其中定义的标签。

    复制代码代码如下:

    <%@ taglib prefix ="bean" uri= "http://struts.apache.org/tags-bean" %> 
    <%@ taglib prefix ="logic" uri= "http://struts.apache.org/tags-logic" %> 
    <%@ taglib prefix ="html" uri= "http://struts.apache.org/tags-html" %> 
    <%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %> 

    自定义标签库优点

    在jsp1.1版本中就增加了自定义标签库。自定义标签库可以看作一种优秀的组件。在自定义标签库中,我们可以把复杂的业务逻辑功能都封装在标签库中了。而不必在jsp中写具体的代码。这样,jsp代码与java编码能力不必强制耦合在一起。

    提到jsp版本的问题,我们首先应该确定我们jsp版本,因为版本不同,标签库文件引入的头文件不同,并且其中的标签也有差异。

    如何查看我们使用的jsp版本或servlet版本

    打开tomcat下lib文件下的jsp-api.jar下的/META-INF/MANIFEST.MF文件,查看jsp版本。

    因为我已经导入eclispe中,图如下:


     

    lib文件下的servlet-api.jar下的/META-INF/MANIFEST.MF文件,查看servlet版本

    因为我已经导入eclispe中,图如下:

    Jsp2新增的特性

    上述图中jsp版本是2.2,servlet版本是3.0。目前servlet3.0对应的是jsp2.2规范,但是一般情况下,我们把jsp2.0与jsp2.2都统称为jsp2.

    如果我们使用jsp2,则web.xml使用的是servlet2.4以上的版本。那我们看一下web.xml对应的头文件:

    新增的特性是:

    复制代码代码如下:

    <web-app version= "4" 
    xmlns="http://javasuncom/xml/ns/j2ee" 
    xmlns:xsi="http://wwwworg/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://javasuncom/xml/ns/j2ee 
    http://javasuncom/xml/ns/j2ee/web-app_2_xsd" > 
    </web-app> 

    1.直接配置jsp的属性

    比如在web.xml中配置:

    复制代码代码如下:

    < jsp-config> 
    <jsp-property-group > 
    <!--  对那些文件进行应用 --> 
    <url-pattern >* jsp</ url-pattern> 
    <!-- 忽略el表达式 --> 
    <el-ignored >true </el-ignored > 
    </jsp-property-group > 
    </ jsp-config> 

    当然还有很多功能:

    2.表达式语言

    表达式语言,就是使用el表达式。

    3.使用TagFile

    使用TagFile可以代替标签处理类和库文件。

    jsp1和jsp2的标签库文件中的头文件

    jsp1的标签文件的头文件:

    复制代码代码如下:

    <?xml version="0" encoding= "UTF-8"?> 
    <!DOCTYPE taglib 
    PUBLIC "-//Sun Microsystems, Inc//DTD JSP Tag Library 1//EN" 
    "http://javasuncom/j2ee/dtds/web-jsptaglibrary_1_dtd"> 

    根据后缀dtd,知道这是引入dtd文件,但是这具体表示什么意思呢?

    若是引入dtd文件,则使用DOCTYPE 这种形式。但是 PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"是什么意思呢?

    根据xml中,如何引入dtd文件?引入dtd文件有以下形式:

    1.在xml文档内部引入dtd

    复制代码代码如下:

    <?xml version="0"?> 
    <!DOCTYPE note [ 
    <!ELEMENT note (to,from,heading,body)> 
    <!ELEMENT to (#PCDATA)> 
    <!ELEMENT from (#PCDATA)> 
    <!ELEMENT heading (#PCDATA)> 
    <!ELEMENT body (#PCDATA)> 
    ]> 
    <note> 
    <to>George</to> 
    <from>John</from> 
    <heading>Reminder</heading> 
    <body>Don't forget the meeting!</body> 
    </note> 

    2.在xml文档引入外部dtd文件
    复制代码代码如下:

    <?xml version="0"?> 
    <!DOCTYPE note SYSTEM "notedtd"> 
    <note> 
    <to>George</to> 
    <from>John</from> 
    <heading>Reminder</heading> 
    <body>Don't forget the meeting!</body> 
    </note> 

    <!ELEMENT note (to,from,heading,body)> 
    <!ELEMENT to (#PCDATA)> 
    <!ELEMENT from (#PCDATA)> 
    <!ELEMENT heading (#PCDATA)> 
    <!ELEMENT body (#PCDATA)> 

    在文档类型声明时,用管间质SYSTEM或PUBLIC来指出外部DTD文件的位置

    用system关键字,如下:<!DOCTYPE 根元素的名字 SYSTEM "外部DTD文件的URI">

    用public如下:<!DOCTYPE 根元素的名字 PUBLIC "DTD的名字" "外部DTD文件的URI">

    一般用system关键字来形容是私有的dtd文件。

    而public关键字来形容的是公共的dtd文件。public形式,首先默认的根据dtd的名字来寻找dtd文件,找不到,则会根据dtd文件的uri寻找文件。

    jsp2中标签文件的头文件如下:其中是使用的schema形式而不是dtd文件。

    复制代码代码如下:

    <?xml version="0" encoding="UTF-8" ?> 
    <taglib xmlns="http://javasuncom/xml/ns/j2ee" 
    xmlns:xsi="http://wwwworg/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://javasuncom/xml/ns/j2ee http://javasuncom/xml/ns/j2ee/web-jsptaglibrary_2_xsd" 
    version="0"></taglib> 

    标签库文件位置

    把tld文件放在WebContent目录下或其子目录下。这样的话,web.xml不用配置其位置即可。tomcat直接读取webcontent下的tld文件。
  • 相关阅读:
    Big Event in HDU
    ACM STEPS——Chapter Two——Section One
    黑马day15 文件上传&amp;apche的工具包
    阿里云部署Docker(8)----安装和使用redmine
    【React Native开发】React Native控件之ProgressBarAndroid进度条解说(12)
    python抓取新浪微博评论并分析
    使用Xcode-debug模式和release模式
    hdu 5417 Victor and Machine
    《Head First 设计模式》学习笔记——适配器模式 + 外观模式
    设计模式(二)
  • 原文地址:https://www.cnblogs.com/frankchia/p/7910908.html
Copyright © 2011-2022 走看看