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

来源:互联网 发布:金盾软件下载 编辑:程序博客网 时间:2024/05/14 09:34

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= "2.4"     xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.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="1.0" encoding= "UTF-8"?><!DOCTYPE taglib   PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"   "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_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="1.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="1.0"?><!DOCTYPE note SYSTEM "note.dtd"><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="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  version="2.0"></taglib>

标签库文件位置


把tld文件放在WebContent目录下或其子目录下。这样的话,web.xml不用配置其位置即可。tomcat直接读取webcontent下的tld文件。


自定义标签的实现


这部分内容,自己具体的不展示了。收藏了几个适合学习的网址,从简单的配置,到具体的使用。http://www.cnblogs.com/liupeizhi/category/281132.htmlhttp://www.cnblogs.com/edwardlauxh/default.html?page=9以上都写了几个系列文章,可以根据以上的文章进行锻炼。
原创粉丝点击