JSP学习记录(二)

前言

    本章主要是对tag文件以及tag标记的介绍,包含tag文件的常用指令等。

Tag文件

Tag文件的结构

Tag文件是拓展名为.tag的文本文件,结构和JSP文件类似。其中可以有普通的HTML标记符、某些特殊指令标记、成员变量和方法的定义、Java程序片和Java表达式。

Tag文件的保存

1、Tag文件所在目录

为了能让web应用中的JSP页面使用某一个Tag文件,需要把该Tag文件保存到Tomcat服务器指定的目录中:

Web服务目录\WEB-INF\tags

例如:

ch3\WEB-INF\tags

2、Tag文件的编码

保存Tag文件时按照Tag文件指定编码保存,例如:

<%@ tag pageEncoding=“utf-8”%>

指定为UTF-8,因此需要在保存时将“保存类型“选择为”所有文件(.)“,将”编码(E)"选择为“UTF-8”.

Tag标记

Tag标记与Tag文件

JSP页面必须通过Tag标记来调用一个Tag文件。

Tag标记的名字和Tag文件的名字一致,也就是说,编写完一个Tag文件并保存到特定目录后就给出了一个Tag标记,格式为:

<Tag文件的名字 />

<Tag文件的名字>其他内容(称为标体内容)</Tag文件的名字>

Tag标记的使用

Web服务目录下的一个JSP页面必须首先使用taglib指令标记引入该Web服务目录下的标记库,这样才能使用Tag标记调用相应的Tag文件。taglib指令格式如下:

<%@ taglib tagdir=“标记库的位置” prefix=“前缀”>

taglib指令中的prefix给出的前缀由用户自定义,其好处时,通过前缀可以有效区分不同标记库中具有相同名字的标记文件。

Tag标记的运行原理

如果该Tag标记对应的Tag文件是首次被JSP页面调用,那么Tomcat服务器会将Tag文件转译成一个Java文件,并编译这个Java文件生成字节码文件,然后执行这个字节码文件。

如果该Tag文件已经被转编译为字节码文件,Tomcat服务器将直接执行这个字节码文件。

如果对Tag文件进行了修改,那么Tomcat服务器会重新将Tag文件转译成一个Java文件,并编译这个Java文件生成字节码文件,然后执行这个字节码文件。

Tag文件中的常用指令

include指令

使用方法和作用与JSP文件中的include指令标记类似。

attribute指令

在Tag文件中通过使用attribute指令让使用它的JSP页面向该Tag文件传递需要的数据。

<%@ attribute name=“对象名字” required=“true”|“false” type=“对象的类型” %>

attribute指令中的name属性是必需的,该属性的值是一个对象的名字。JSP页面在调用Tag文件时,可向name属性指定的对象传递一个引用。

variable指令

Tag文件通过使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面。

1、variable指令的格式

<%@ variable name-given=“对象名” variable-class=“对象类型” scope=“有效范围” %>

属性name-given的值就是Tag文件返回给JSP页面的对象,该对象名字必须符合标识符规定。variable-class的值是返回的对象的类型,对象的类型必须带有包名。

2、对象的返回

Tag文件为了给JSP页面返回一个对象,就必须将返回的对象的名字以及该对象的引用存储到Tomcat服务器提供的内置对象jspContext中。Tag文件只有将对象的名字及其引用存储到jspContext中,JSP页面才可以使用该对象。比如:

<%@ variable name-given=“time” variable-class=“java.time.LocalDate” scope="AT_END”>

为JSP页面返回名字是time的LocalDate对象。那么Tag文件中必须让jspContext调用

setAttribute(“对象名”,对象的引用);

3、aglib指令

JSP页面或Tag文件都可以使用taglib指令引入标记库(如前面各个例子所示)。taglib指令格式如下:

<%@ taglib tagdir =“自定义标记库的位置” prefix=“前缀”>

一个Tag文件也可以使用几个taglib指令标记引入若干个标记库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值