JSP实用教程-Tag文件与Tag标记

Tag文件是扩展名为.Tag的文本文件,包含HTML、指令和Java代码,用于代码复用。Tag标记用于调用Tag文件,首次调用时会被转换成Java文件并编译执行。Tag文件的保持需放在WEB-INF/tags目录下,保存时遵循指定的编码。Taglib指令用于引入标记库,JSP页面通过带前缀的Tag标记调用Tag文件。attribute和variable指令分别用于传递和返回数据。
摘要由CSDN通过智能技术生成

一.Tag文件

目录

一.Tag文件

1.Tag文件的结构

2.Tag文件的保持

二.Tag标记

1.Tag标记与Tag文件

2.Tag标记的使用

3 .Tag标记的运行原理  

三.Tag文件中的常用指令

1.Tag指令

2 include指令

3 attribute指令

4 variable指令

5 taglib指令


1.Tag文件的结构

Tag文件是扩展名为.Tag的文本文件,其结构与JSP相似,包括普通的HTML标记符、某些特殊的指令标记、成员变量声明和方法的定义、Java程序片和Java表达式。

例:负责计算100以内的全部奇数的代数和
<%@ tag pageEncoding="utf-8" %> //tag标记
<p style="font-family:宋体;font-size:36">
1~100内的奇数之和:
  <%  int sum=0,i=1; //java程序片
         for(i=1;i<=100;i++){
            if(i%2==1)
               sum=sum+i;
        }
        out.println(sum);
  %> 
</p>

2.Tag文件的保持

1、Tag文件所在目录

Tag文件可实现代码的复用。如果某Web服务目录下的JSP页面准备调用一个Tag文件,那么必须在Web服务目录下建立以下目录结构;

Web服务目录\WEB-INF\tags

:WEB-INF(大写)和tags是固定的目录名称。

2、Tag文件的编码

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

<%@tag pageEncoding="utf-8"%>

该Tag指令指定编码方式为utf-8,则Tag文件保存时应选择“utf-8”。

二.Tag标记

1.Tag标记与Tag文件

JSP页面必须通过Tag标记来调用一个Tag文件,tag标记的名字和Tag文件的名字一致,也就是说当我们写了一个tag文件放到特定的目录中,也就给出了一个tag标记

Tag标记格式为:

<Tag 文件名字/>

<Tag 文件名字>标体内容</Tag 文件名字>

2.Tag标记的使用

一个JSP页面通过使用tag标记来调用一个Tag文件。Web服务目录下的一个JSP页面使用tag标记调用文件之前,必须首先使用taglib指令标记引入该web服务目录下的标记库,只有这样jsp才能调用相应的tag文件。

taglib指令的格式为:<%@taglib tagdir="标记库的位置"prefix=“前缀”>   

例:

<%@taglib tagdir='/WEB-INF/tags' prefix='computer'%>

引入标记库后,JSP页面可使用带前缀的Tag标记调用相应的Tag文件

格式:<"前缀":Tag去掉扩展名后的文件名/>

例:

<computer:oddNumberSum/>调用文件名为oddNuberSum.tag的Tag文件

3 .Tag标记的运行原理
  

a.如果该Tag标记对应的Tag文件是首次被JSP页面调用,那么Tomcat服务器会将Tag文件转译成一个Java文件,并编译这个Java文件生成字节码文件,然后执行这个字节码文件(这和执行JSP页面的原理类似)。
      b.如果该Tag文件已经被转编译为字节码文件,Tomcat服务器将直接执行这个字节码文件。
      c.如果对Tag文件进行了修改,那么Tomcat服务器会重新将Tag文件转译成一个Java文件,并编译这个Java文件生成字节码文件,然后执行这个字节码文件。
 

三.Tag文件中的常用指令

1.Tag指令

<%@tag 属性1=“属性值” 属性2=“属性值”...%>

<%@tag 属性1=“属性值” %>

<%@tag属性2=“属性值”%>

...

<%@tag属性n=“属性值”%>

①language属性

作用:指定脚本语言

目前只能取值java,默认值为java,故无需指定。

②import属性

作用:为Tag文件引入包中的类

可以取多个值,例:

import java.lang.*;

import javax.servelt.*;

import javax.serverlt.jsp.*;

------

③pageEncoding属性

作用:指定Tag文件的字符编码

<%@ tag pageEncoding="utf-8"%>

默认值为ISO-8859-1,为了避免信息出现乱码,需要将属性设置为utf-8

2 include指令

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

3 attribute指令

作用:让使用该指令的JSP页面向该Tag文件传递需要的数据

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

例:

<%@ attribute name="reuslt" required="ture" type="java.lang.Double"%>

:name属性是必需的,type在指定对象是必须使用包名,其默认值为java.lang.String。

【name属性】可传递一个引用,方式如下:

<前缀:Tag文件名字 对象名字=“对象的引用”/>

例:

<computer:myTag result="newdouble(3.1415926)"/>

【required属性】:默认值为false,当为true时,调用该Tag文件的JSP页面必须向该Tag文件中attribute指令中的name属性给出的对象传递一个引用,当为false时,调用该Tag文件的JSP页面必须向该Tag文件中attribute指令中的name属性给出的对象传递或不传递对象的引用,

4 variable指令

作用:将Tag文件中的对象返回给调用该Tag文件的JSP页面。

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

属性name-given:是返回给JSP页面的对象,必须标识符规定(即可由字母数字下划线美元符号数字组成,且第一个字符不能为数字)。

属性variable-class:必须带有包名

属性scope:指定对象的有效范围,值可取AT_BEGIN,NESTED,AT_END.

<%@ variable name-given="time"

variable-class="java.time.LocalDate"scope="AT_END" %>

2、对象的返回

Tag文件只有将对象的名字及其引用存储到jspContext中,才能使用该对象。

jspContext.setAttribute("对象名",对象的引用)

注:在JSP页面中不可以再定义与Tag文件返回的对象具有相同名字的变量,否则Tag文件无法将variable 指令给出的对象返回给JSP页面(并将出现编译错误)。如果 Tag 文件同时使用variable 指令和attribute指令,那么variable指令中name-given和attribute 指令中name给出的对象不能相同(否则将出现编译错误)。

5 taglib指令

JSP页面或Tag文件都可以使用taglib指令引入标记库,可使用多个taglib指令标记引入若干标记库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值