JSP tag文件的attribute指令和variable指令的使用
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指令的使用相关推荐
- 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标记的运行原理 ...
- Tag文件和Tag标记的用法详解
Tag文件和Tag标记 目录 1.为什么要使用Tag文件 2.Tag文件的结构 3.Tag文件的存储目录 4.Tag标记 5.Tag文件中常用的指令 1)tag指令 2)attribute指令 3)v ...
- Tag文件与Tag标记
目录: 1.Tag文件 2.Tag标记 3.Tag文件中的常用指令 1.1Tag文件的结构 Tag文件 的拓展名为.Tag的文本文件,其结构与JSP文件类似.一个Tag文件可以有普通的HTML标记符. ...
- jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String
描述 解决思路 (1)第一步:可以看到信息中主要是Exception描述: 他描述23行处理出问题,23行是调用tag文件,也就是tag文件的处理出了问题. (2)然后第二步,看root cause. ...
- 20190328学习笔记 - JSP 中的 tag 文件
20190328学习笔记 - JSP 中的 tag 文件 对于tag 文件 1. 引入 tag 文件 2. 在/WEB-INF/tags/sys 下,新增一个gridselect.tag文件 3. 在 ...
- java jsp面积怎么算,JSP 课后作业:编写 Tag 文件计算矩形、圆形面积
题目 编写两个 Tag 文件 Rect.tag 和 Circle.tag.Rect.tag 负责计算并显示矩形的面积,Circle.tag 负责计算并显示圆的面积.编写一个 JSP 页面 lianxi ...
- java自定义tag,tag文件与tag标记,java自定义标签
上一篇我们讲了如何使用TAG简化我们的basePath获取,现在我们再来谈谈TAG另外的一个用处,使用场景说明:很多时候,我们从后台获取的时间参数(从数据库中读取的)是这种格式的:1994123012 ...
- java tag文件_Tag文件使用
Tag文件和JSP文件很类似,可以被JSP文件动态加载调用,但是用户不能直接访问. Tag文件的存储目录: Tag文件规定放在/WEB-INF/tags目录或其子目录下,文件名随意. Tag文件的使用 ...
- jsp tag 自定义标签实现按钮的显示
前些天在一个项目中做了一个最基本的权限管理(标准的权限结构,用户-角色-菜单),后来需要精确地控制到按钮就想到了使用自定义标签(jsp tag)来处理按钮的显示与隐藏. 下面是我参考网上的资料自己写的 ...
最新文章
- Ingress 继任者 Gateway API 使用
- 独家 | 以国家战略科学家身份,顶级AI学者朱松纯回国,筹建北京通用AI研究院...
- origin9语言设置中文_英雄联盟手游怎么设置繁体 LOL手游繁中设置方法?_英雄联盟手游...
- pyaudio与优美的声音
- python中一共有多少个关键字-Python中关键字有多少个?
- 计算机教务管理系统ER图,图书管理系统er图 [2].doc
- Day03:文件打开;错误处理
- React开发(145):目录规范:
- C#通过修改注册表改变IE默认选项
- MySQL Cookbook 学习笔记-02
- 2020年短视频用户价值研究报告
- 信息学奥赛C++语言: 素数回文数的个数
- PAT——乙级1036:跟奥巴马一起编程 乙级1027:打印沙漏 (有坑)
- 【转载】Docker镜像打包示例
- 【03】AngularJS 简介
- linux分辨率变低了,解决 ubuntu 装N卡驱动后开机分辨率变低 转
- 【数据挖掘】数据挖掘概述
- 利用三点坐标加海伦公式求三角形面积
- Vuex详解,一文彻底搞懂Vuex
- tcpdump抓包ftp协议_ftp传输不正常,请教tcpdump截取的一段ftp包所表达的意思
热门文章
- 敏捷悖论之:站会的三种状态
- SIM800C天线接口设计
- [BZOJ1033][ZJOI2008]杀蚂蚁antbuster(大模拟)
- Windows8 Metro快捷键 | Win8迷
- 西藏2021高考成绩排名查询,2021年西藏高考成绩排名表,西藏高考成绩排名顺序查询...
- HTML5期末大作业:海贼王网站设计——代码质量好-海贼王(6页) 学生漫画网页设计模板代码 漫画网页制作模板 学生简单动漫网站设计成品
- 汇编语言——标志(状态字)寄存器PSW
- 亚马逊测评使用的买家账号怎么养?测评自养号需要具备哪些条件?
- 漫谈Android 增量更新
- uwp连接mysql数据库_在UWP中使用SQLite数据库,支持加密