Tag文件和Tag标记的用法详解 您所在的位置:网站首页 java文件的后缀必须使用吗 Tag文件和Tag标记的用法详解

Tag文件和Tag标记的用法详解

2024-07-11 02:17| 来源: 网络整理| 查看: 265

                                      Tag文件和Tag标记 目录

1.为什么要使用Tag文件

2.Tag文件的结构

3.Tag文件的存储目录

4.Tag标记

5.Tag文件中常用的指令

1)tag指令

2)attribute指令

3)variable指令

4)taglib指令

5)include指令

6.Tag文件的嵌套

1.为什么要使用Tag文件

 1) 在Web应用中许多JSP页面都有相同的信息,如都需要相同的导航栏和尾页等。如果能把相同的信息都形成一种特殊的文件,而且各个JSP页面都可以使用这种特殊的文件,那么就能实现代码的复用,维护性就比较好了

2)实现代码复用还有另外两种方式,include指令和include动作,那就来说说他们的不足吧,首先不论是include指令还是include动作处理的都是单一 的JSP文件,用户可以通过输入地址栏的方式来访问响应的JSP文件,这时候用户访问的JSP文件可能只是一个导航栏,这不是设计者希望看到的.include指令的耦合性太大,include动作虽然耦合性较小但是能放在Web服务目录的任意子目录中,不仅显的杂乱无章,还不利于管理和维护.

3)使用tag文件就能很好的解决这一缺点,tag文件不仅能实现动态加载实现代码复用,还不能让用户直接访问,tag文件放在指定 的目录下,维护起来会比较方便(很多时候会让tag文件去处理数据,而JSP页面只是去显示数据,实现数据显示和数据处理分离,这样就比较便于维护了)

2.Tag文件的结构

Tag文件是扩展名为.tag的文件,其实与JSP文件差不多.在Tag文件中可以使用HTML标签,可以使用java脚本以及JSP动作和指令,还可以使用某些特殊的指令(后面会讲)

3.Tag文件的存储目录

Tag文件必须存在/WEB-INF/tags 文件夹下(不然会报错),存放目录如下图所示:

4.Tag标记

编写了一个Tag文件会对应生成一个Tag标记,Tag标记的格式为:

         标记体

当JSP页面希望向Tag文件传递相应的信息时,可以使用标记体来传递,在Tag文件中通过来调用标记体

一个Tag文件对应一个Tag标记,那么该目录下有若干个Tag文件就行成了一个库,在JSP页面要调用Tag文件,就要通过taglib指令来引入相应目录下的一个标记库,只有这样JSP页面才能调用相应的Tag文件并动态执行该Tag文件

注意:使用前缀可以区别不同标记库下相同名字的标记文件

如:调用/WEB-INF/tags/math/random.tag文件就可以在JSP页面中这样写

来引入标记库

之后可以或者标记体来调用了并执行相应tag文件了

5.Tag文件中常用的指令 1)tag指令 1.body-content属性

body-content属性的值有empty、tagdependent、scriptless,其默认值是scriptless

empty:当body-content属性的属性值为empty时,JSP页面中必须使用没有标记体的tag标记,

tagdependent:当body-content属性的属性值为tagdepentdent时,JSP页面通过标记体传来的信息全部按纯文本处理

scriptless:当body-content属性的属性值为scriptless时,标记体中不能使用Java程序块,可以使用文本,EL表达式,一个自定义标记,一个动作

2.language属性

其属性值只支持java

3.import属性

引入java核心类包,可以在Tag文件中使用某些类,跟导包没什么区别就不说了

4.pageEncoding属性

Tag文件的编码属性,其默认值是ISO-8859-1

2)attribute指令

Tag文件充当着代码复用的角色,如果能像include动作一样向Tag文件传递数据,这会让Tag文件的功能更加强大,这当然是可以的,在Tag文件中有attribute指令,其语法格式如下:

attribute指令中name属性是必须的,该属性是引用一个对象的名字.required为true时必须给其传值,为false时可以传可以不传,type为该对象的类型,默认为java.lang.String类型,可以改为其他类型,但要注意的是,必须对象类型必须带有包名,如不能简写为type="Integer"必须是type="java.lang.Integer"

需要注意的是:在Tag文件中不可以再定义和attribute指令中name属性指定的对象具有相同名字的变量,否则将隐藏attribute指令中的对象,使其失效(可以通过观察源码发现,attribute中的变量其实在Tag文件中一个成员变量)

下面是使用attribute指令的一个例子计算三角形面积的例子:

JSP页面:

My JSP 'MyJsp.jsp' starting page 边长A: 边长B: 边长C:

tag文件:

以下是调用Tag文件的效果: 这是一个Tag文件,负责计算三角形的面积. JSP页面传递过来的三条边:,, c && a+c>b && b+c>a){ double p = (a+b+c)/2; out.print("三角形的面积: "+format.format(Math.sqrt(p*(p-a)*(p-b)*(p-c)))); }else{ out.print(""+a+" "+b+" "+c+" 不能构成三边"); } %>

 

3)variable指令

Tag文件通过使用attribute指令JSP页面可以向Tag文件传递数据.在某些Web设计中,不仅需要向其传递数据,还需要他返回某些数据进行特殊处理.比如多个JSP页面需要Tag文件处理一些数据,但是不需要显示,因为每个JSP页面需要特殊的显示,这时候就可以使用variable指令,variable指令语法格式如下:

name-given:用来指定对象的名字,要符合命名规则

variable-class:指定的类型,注意需要打全包名,不能进行简写

scope中有三个属性值:

                1.AT_BEGIN,在使用JSP页面标记的时候就可以使用该对象

                 2.NESTED,只能在标记体中使用该对象

                 3.AT_END,只能在标记体结束后使用该对象

Tag通过jspContext.setAttribute("对象的名字",对象的引用);把对象名字和对象引用存储到内置对象jspContext中,JSP页面才能使用该对象

4)taglib指令

和JSP页面一样,Tag文件中也可以使用taglib指令来调用其他的tag文件,操作一样

5)include指令

其用法与JSP页面中的include指令差不多,这里就不说了

6.Tag文件的嵌套

在使用Tag标记时,可以带有标记体,标记体还可以是一个Tag标记,这就实现了Tag标记的嵌套

转载请注明出处


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有