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

时间:2024-03-15 23:49:46 

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中,图如下:

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

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


 

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

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

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

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

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>


当然还有很多功能:

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

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文件。

标签:自定义标签,Taglib
0
投稿

猜你喜欢

  • 如何基于python操作json文件获取内容

    2023-03-30 15:48:04
  • MySQL 8.0.20 安装教程图文详解(windows 64位)

    2024-01-22 07:32:07
  • python正则分组的应用

    2022-05-24 20:50:39
  • python高斯分布概率密度函数的使用详解

    2023-08-18 15:07:24
  • python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法

    2021-12-16 16:24:37
  • 在 Jupyter 中重新导入特定的 Python 文件(场景分析)

    2021-01-30 01:16:57
  • python读取yaml文件后修改写入本地实例

    2021-12-20 02:53:54
  • numpy的sum函数的axis和keepdim参数详解

    2021-08-02 02:48:46
  • 关于JS中变量的显式声明和隐式声明

    2008-10-06 13:22:00
  • Python科学计算包numpy用法实例详解

    2021-11-12 15:07:20
  • php延迟静态绑定实例分析

    2023-11-23 11:44:57
  • python装饰器decorator介绍

    2021-12-18 10:56:25
  • golang中cache组件的使用及groupcache源码解析

    2024-02-07 11:12:25
  • pytorch显存一直变大的解决方案

    2021-03-03 00:03:09
  • 略谈美国雅虎首页改版

    2009-07-26 18:34:00
  • 详解Python安装scrapy的正确姿势

    2023-04-04 01:38:14
  • PyQt5实现QLineEdit添加clicked信号的方法

    2021-02-08 18:24:02
  • 如何利用Python实现一个论文降重工具

    2021-02-04 08:11:28
  • 跟老齐学Python之关于类的初步认识

    2022-11-04 15:49:36
  • JavaScript 实现 Konami Code

    2009-05-26 12:44:00
  • asp之家 网络编程 m.aspxhome.com