版权归原作者所有,如有侵权,请联系我们

[科普中国]-标签编程

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

为了真正实现JSP文件中不包含任何Scriptlet代码,还需要通过标签来解决。标签分为自定义标签和开源工具提供的通用标签。

简介即便是在MVC设计模式中,仅通过使用EL表达式语言,很多时候JSP页面还是会存在大量的Scriptlet代码,为了真正实现JSP文件中不包含任何Scriptlet代码,还需要通过标签来解决。标签分为自定义标签和开源工具提供的通用标签。自定义标签通过标签编程来实现,由于标签编程较难,加上用户自定义的标签一般都很繁琐、不通用,所以实际开发中并不常用,读者只需要了解基本原理即可。真正在开发中使用的都是各种开源组件中提供。

JSP的开发是在HTML代码中嵌人大量的Java代码,但是这样使得JSP页面中充满了Java程序,修改或维护起来非常不方便,例如,下面的代码中就出现了大量的Scriptlet代码。
【示例代码1】包含Scriptlet代码的程序。

|| ||

firsttag

hello
org.ixy.tag.Hel]oTag
empty

在hellotag.tld文件中,详细地描述了此标签的版本和支持的JSP版本,其中最重要的是在元素中定义的元素,表示的是标签中使用的名称。每个元素的具体作用如下:
:TLD文件的根元素,其中可以定义多个元素。
:标签库的版本,用于开发和配置管理。
:一个标签的短名称,主要用于标签的编写工作。
:描述标签库中的每一个标签。
:标签的名称。
:标签处理类的路径。
:表示标签中是否包含标签体,如果是empty表示标签体为空。
编写完*.tld文件之后,下面即可通过]SP访问此标签,JSP中调用标签的语法如下:

prefix表示的是标签使用时的前缀,uri表示的是此标签对应的*.tld文件的路径。【示例代码4】标签测试程序。
源文件名称:hellotag.jsp

My Jsp’hellotag.Jsp‘starting page

在hellotag.jsp页面中,首先通过定义了一个标签的前缀名称
“mytag”,之后通过此前缀名称调用了hellotag.tld文件中定义的标签,调用标签的名称为
“hello”。程序的运行结果如图所示。

此时,虽然完成了一个标签的开发,但是也存在一个不足,本案例中的程序是在JSP(hellotag.jsp)中直接找到了标签描述文件(hellotag.tld),如果该标签文件名称过长,编写起来会很麻烦,若是更换标签描述文件的名称,修改起来更加麻烦,所以,一般会采取以下方法:在web.xml文件中对所有的*.tld文件进行名称的映射,以后直接在JSP页面中使用映射名称即可访问标签描述文件,修改web.xml,映射TLD文件,如下所示:

pxxy_hello
/Web—INF/hellotag.tld

此处将“/Web—INF/hellotag.tld”文件映射成pxxy—hello名称,所以在以后所有的JSP
中直接通过pxxy—hello即可访问此标签描述文件。
修改hellotag.jsp,使用映射名称访问标签:

此时JSP通过映射名称访问标签描述文件,以后维护时也更加容易,程序运行结果与上面的一致。

通过上述标签案例的操作可以知道,一个标签的开发包含以下几个部分。
·标签处理类:HelloTag.java。
·标签描述文件:hellotag.tld。
·JSP页面:通过定义标签。
·在web.xml文件中配置映射名称。(可选)
一个标签的操作中*.tld是一个最重要的文件,所有标签的具体信息都要通过此文件定义,此文件的导人分两种情况。当一个JSP页面第一次运行时,首先会根据JSP文件编写的中的uri属性找到对的*.tld文件,并将其加载到JVM中;而如果是第二次运行此标签,由于JVM已经存在此*.tld文件,所以不会再重复加载。2

JSTL简介使用标签库可以避免过多的Scriptlet代码,但是如果采用自定义的标签库做法,会非常繁琐且不通用,所以开发中一般是借助于一些开源工具使用一些公共的标签,JSTI。就是一种使用广泛的通用标签。
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开放源代码的标签组件,由
Apaceh的Jakarta小组开发,可以直接从http://tomcat.apache.org/taglibs/上下载。JSTL 1.2版本中主要有如下几个标签库支持,如下所示。

JSTL1.2下载的JSTL是以jar包的形式存在的,直接将此jar包保存在Web—INF\lib目录中,之后可以直接通过WinRAR丁具打开此jar包,并且将其中META—INF文件夹中的几个主要标签配置文件(c.tld、{mt.tld、fn.tld、sql.tld、X.tld)保存在Web—INF文件夹中,如下所示。

此时,即可使用JSTL进行项目开发。

核心标签库JSTI。的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、Url操作标签。使用这些标签能够完成JSP页面的基本功能,减少编码工作。1

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学