tag文件的attribute指令和variable指令

文章目录

  • tag文件的attribute指令和variable指令
  • 一、attribute指令
    • 1、attribute指令的作用与用法
    • 2、运用实例
      • 1 example3_3.jsp
      • 2 Triangle.tag
      • 3 效果图与总结
  • 二、variable指令
    • 1.variable指令的作用与用法
    • 2、运用实例
      • 1 uesone.jsp
      • 2 giveroot.tag
      • 3 效果图与总结
  • 总结

一、attribute指令

1、attribute指令的作用与用法

attribute指令本质就是JSP页面向tag文件传输数据的一种应用

格式:在Tag中
<%@ attribute name=“对象名字” required=“true” type=“对象类型” %>
在引用Tag的JSP中
<前缀: Tag文件名字 对象名字=“对象的引用” />

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

如:tag中定义:<%@ attribute name=“length” required=“true” %>
JSP中代码: <beijing: AddSum length=“1000” />

2、运用实例

1 example3_3.jsp

<%--Created by IntelliJ IDEA.User: ruochenDate: 2020/10/29Time: 8:20To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<html>
<body>
<h3>以下是调用Tag文件的效果:</h3>
<computer:Triangle sideA="5" sideB="6" sideC="7"/>
</body>
</html>

2 Triangle.tag

<%@ tag  pageEncoding="utf-8" %>
<h4>这是一个Tag文件,负责计算三角形的面积。<%@ attribute name="sideA" required="true" %><%@ attribute name="sideB" required="true" %><%@ attribute name="sideC" required="true" %><%!   public String getArea(double a,double b,double c) {if(a+b>c&&a+c>b&&c+b>a) {double p=(a+b+c)/2.0;double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;return "<BR>三角形的面积:"+area;}elsereturn("<BR>"+a+","+b+","+c+"不能构成一个三角形,无法计算面积");}%><%   out.println("<BR>JSP页面传递过来的三条边:"+sideA+","+sideB+","+sideC);double a=Double.parseDouble(sideA);double b=Double.parseDouble(sideB);double c=Double.parseDouble(sideC);out.println(getArea(a,b,c));%>

3 效果图与总结


通过<computer:Triangle sideA=“5” sideB=“6” sideC=“7”/>
向Triangle.tag文件传输三个数据
再通过
<%@ attribute name=“sideA” required=“true” %>
<%@ attribute name=“sideB” required=“true” %>
<%@ attribute name=“sideC” required=“true” %>
接收三个数据,从而完成tag文件从jsp文件中获取数据的需求

二、variable指令

1.variable指令的作用与用法

variable指令本质就是实现Tag向JSP返回数据。

格式:
1.在Tag中首先声明:
<%@ variable name-given=“对象名字” variable-class=“对象类型” scope=“有效范围” %>

2.然后调用jspContext内置对象的setAttribute()将对象存储到jspContext中,以便JSP调用。如:
jspContext.setAttribute(“time”, new Date());

3.那么在JSP中,可以直接通过对象名来使用这个对象。如:
int year=time.getYear()+1900;
该代码使用Date的getYear()方法,将Tag传送的time对象中记录的时间年赋给year变量。

注意
1. 返回的是一个对象。
2. JSP中不可再定义与name具有相同名字的变量,否则会出现编译错误。
3. scope定义了variable在JSP中的使用范围,可取值为AT_BEGIN、NESTED和AT_END。
AT_BEGIN: JSP页面一旦使用Tag,就可以使用variable给出的对象。
NESTED: JSP页面只可以在Tag标记的标记体中使用variable给出的对象。
AT_END: JSP页面在Tag标记结束后才可以使用variable给出的对象。

2、运用实例

1 uesone.jsp

<%--Created by IntelliJ IDEA.User: ruochenDate: 2020/10/29Time: 9:21To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<html>
<head><title>Title</title>
</head>
<body>
<computer:giveroot coefficientA="3" coefficientB="6" coefficientC="-2"/>
<h4> 方程的根以及计算两个根的和:<%if(rootOne!=null&&rootTwo!=null){double r1=rootOne.doubleValue();   //rootOne是giveroot.tag文件返回的Double型对象double r2=rootTwo.doubleValue();  //rootTwo是giveroot.tag文件返回的Double型对象out.println("<br>根1:"+r1);out.println("<br>根2:"+r2);double sum=r1+r2;out.println("<br>根1与根2之和:"+sum);}else{out.println("<br>方程没有实根");}%>
</body>
</html>

2 giveroot.tag

<%@ tag  pageEncoding="UTF-8" %>
<%@ attribute name="coefficientA" required="true" %>
<%@ attribute name="coefficientB" required="true" %>
<%@ attribute name="coefficientC" required="true" %>
<%@ variable name-given="rootOne" variable-class="java.lang.Double" scope="AT_END" %>
<%@ variable name-given="rootTwo" variable-class="java.lang.Double" scope="AT_END" %>
<%   double disk,root1,root2;double a=Double.parseDouble(coefficientA);double b=Double.parseDouble(coefficientB);double c=Double.parseDouble(coefficientC);disk=b*b-4*a*c;if(disk>=0&&a!=0){root1=(-b+Math.sqrt(disk))/(2*a);root2=(-b-Math.sqrt(disk))/(2*a);jspContext.setAttribute("rootOne",root1);     //为JSP页面返回对象rootOnejspContext.setAttribute("rootTwo",root2);    //为JSP页面返回对象rootTwo}else{jspContext.setAttribute("rootOne",null);jspContext.setAttribute("rootTwo",null);}
%>

3 效果图与总结

通过<computer:giveroot coefficientA=“3” coefficientB=“6” coefficientC="-2"/>
向giveroot.tag文件传输三个数据
再通过
<%@ attribute name=“sideA” required=“true” %>
<%@ attribute name=“sideB” required=“true” %>
<%@ attribute name=“sideC” required=“true” %>
接收数据
通过variable指令向jsp页面传输数据

<%@ variable name-given=“rootOne” variable-class=“java.lang.Double” scope=“AT_END” %>
<%@ variable name-given=“rootTwo” variable-class=“java.lang.Double” scope=“AT_END” %>
调用jspContext内置对象的setAttribute()将对象存储到jspContext中,以便JSP调用。
jspContext.setAttribute(“rootOne”,root1);

总结

提示:这里对文章进行总结:
attribute指令是jsp页面向tag文件传输数据
variable指令是从tag文件向jsp页面传输数据

JSP tag文件的attribute指令和variable指令的使用相关推荐

  1. JSP实用教程-第三章Tag文件与Tag标记

    目录 3.1 Tag文件 3.1.1Tag文件的结构 3.1.2Tag文件的保存 3.2 Tag标记 3.2.1 Tag文件和Tag标记 3.2.2 Tag标记的使用 3.2.3 Tag标记的运行原理 ...

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

    Tag文件和Tag标记 目录 1.为什么要使用Tag文件 2.Tag文件的结构 3.Tag文件的存储目录 4.Tag标记 5.Tag文件中常用的指令 1)tag指令 2)attribute指令 3)v ...

  3. Tag文件与Tag标记

    目录: 1.Tag文件 2.Tag标记 3.Tag文件中的常用指令 1.1Tag文件的结构 Tag文件 的拓展名为.Tag的文本文件,其结构与JSP文件类似.一个Tag文件可以有普通的HTML标记符. ...

  4. jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String

    描述 解决思路 (1)第一步:可以看到信息中主要是Exception描述: 他描述23行处理出问题,23行是调用tag文件,也就是tag文件的处理出了问题. (2)然后第二步,看root cause. ...

  5. 20190328学习笔记 - JSP 中的 tag 文件

    20190328学习笔记 - JSP 中的 tag 文件 对于tag 文件 1. 引入 tag 文件 2. 在/WEB-INF/tags/sys 下,新增一个gridselect.tag文件 3. 在 ...

  6. java jsp面积怎么算,JSP 课后作业:编写 Tag 文件计算矩形、圆形面积

    题目 编写两个 Tag 文件 Rect.tag 和 Circle.tag.Rect.tag 负责计算并显示矩形的面积,Circle.tag 负责计算并显示圆的面积.编写一个 JSP 页面 lianxi ...

  7. java自定义tag,tag文件与tag标记,java自定义标签

    上一篇我们讲了如何使用TAG简化我们的basePath获取,现在我们再来谈谈TAG另外的一个用处,使用场景说明:很多时候,我们从后台获取的时间参数(从数据库中读取的)是这种格式的:1994123012 ...

  8. java tag文件_Tag文件使用

    Tag文件和JSP文件很类似,可以被JSP文件动态加载调用,但是用户不能直接访问. Tag文件的存储目录: Tag文件规定放在/WEB-INF/tags目录或其子目录下,文件名随意. Tag文件的使用 ...

  9. jsp tag 自定义标签实现按钮的显示

    前些天在一个项目中做了一个最基本的权限管理(标准的权限结构,用户-角色-菜单),后来需要精确地控制到按钮就想到了使用自定义标签(jsp tag)来处理按钮的显示与隐藏. 下面是我参考网上的资料自己写的 ...

最新文章

  1. Ingress 继任者 Gateway API 使用
  2. 独家 | 以国家战略科学家身份,顶级AI学者朱松纯回国,筹建北京通用AI研究院...
  3. origin9语言设置中文_英雄联盟手游怎么设置繁体 LOL手游繁中设置方法?_英雄联盟手游...
  4. pyaudio与优美的声音
  5. python中一共有多少个关键字-Python中关键字有多少个?
  6. 计算机教务管理系统ER图,图书管理系统er图 [2].doc
  7. Day03:文件打开;错误处理
  8. React开发(145):目录规范:
  9. C#通过修改注册表改变IE默认选项
  10. MySQL Cookbook 学习笔记-02
  11. 2020年短视频用户价值研究报告
  12. 信息学奥赛C++语言: 素数回文数的个数
  13. PAT——乙级1036:跟奥巴马一起编程 乙级1027:打印沙漏 (有坑)
  14. 【转载】Docker镜像打包示例
  15. 【03】AngularJS 简介
  16. linux分辨率变低了,解决 ubuntu 装N卡驱动后开机分辨率变低 转
  17. 【数据挖掘】数据挖掘概述
  18. 利用三点坐标加海伦公式求三角形面积
  19. Vuex详解,一文彻底搞懂Vuex
  20. tcpdump抓包ftp协议_ftp传输不正常,请教tcpdump截取的一段ftp包所表达的意思

热门文章

  1. 敏捷悖论之:站会的三种状态
  2. SIM800C天线接口设计
  3. [BZOJ1033][ZJOI2008]杀蚂蚁antbuster(大模拟)
  4. Windows8 Metro快捷键 | Win8迷
  5. 西藏2021高考成绩排名查询,2021年西藏高考成绩排名表,西藏高考成绩排名顺序查询...
  6. HTML5期末大作业:海贼王网站设计——代码质量好-海贼王(6页) 学生漫画网页设计模板代码 漫画网页制作模板 学生简单动漫网站设计成品
  7. 汇编语言——标志(状态字)寄存器PSW
  8. 亚马逊测评使用的买家账号怎么养?测评自养号需要具备哪些条件?
  9. 漫谈Android 增量更新
  10. uwp连接mysql数据库_在UWP中使用SQLite数据库,支持加密