没有合适的资源?快使用搜索试试~ 我知道了~
Java的tag标签教程
4星 · 超过85%的资源 需积分: 31 64 下载量 32 浏览量
2011-12-16
14:40:23
上传
评论 2
收藏 376KB PDF 举报
温馨提示
试读
16页
Java的tag标签教程,可以不用写类就封装代码,方便网站及BS系统不用重启服务器修改程序。
资源推荐
资源详情
资源评论
学习编写标记文件(tag):
自定义标记的用途就是给程序员可以自定一些特定功能的标记, 以及封装代码, 达到分工,
重用性等
多种好处.
JSP 规范 2.0 中新增了标记文件(tag file)的使用, 免除以前自定义标记必须为一个 Java 类, 以
及必须
加上一个标记描述文件(tld)的编码难度.
以下我们来看标签文件的使用.
1. 存放:
一个标记文件以 tag 为後缀名, 以同一类型的检签放到同一个文件夹中组成一个标记库, 再
放到
"/WEB-INF/tags/"中保存.
例如接下来我打算建立一组有关数学的标记库, 我在"/WEB-INF/tags/"下建立一个"maths"文
件夹, 然
後就可以在"/WEB-INF/tags/maths/"下建立後缀名为 tag 的标记文件了.
现在我想先做一个数字相加的标记, 起名为"add.tag", 放到 maths 标记库下.
2. 语法:
标记文件其实就是一个 jsp 文件, 所以语法基本上跟 jsp 是一样的, 在第一行加上以下这个元
素来告诉
服务器它是一个标记文件:
<%@ tag %>
我们还要加上一些属性来告诉服务器这个标记文件的设定:
1) body-content - 设定这个标记的主体内容类型:
A. empty
这个是一个空标记.
B. scriptless
主体可以有内容, 而 jsp 容器会去处理里面的 jsp 元素, 换句话就是可以是
文本, EL 表达式, 标准动作甚至另一个自定义标记.
C. tagdependent
主体可以有内容, 而 jsp 容器会把它们当作纯文件处理 .
2) pageEncoding - 设定这个标记的编码
我们的 add 标记是个空标记, 而编码是"UTF-8", 所以加上这样的一句:
<%@ tag body-content="empty" pageEncoding="UTF-8" %>
标记中使用以下这个元素来声明属性:
<%@ attribute %>
attribute 元素也有几个属性:
1) name - 这个 attribute 的名称.
2) required - true/false, 是否必须的.
3) rtexprvalue - true/false, 这个 attribute 可否使用 EL 表达式, 否则为纯文本.
4) type - 设定这个 attribute 的类型, jsp 容器会把结果自动转换成这个类.
我们的 add.tag 有两个属性, 分别代表两个要相加的数字, x 跟 y, 它们都是必须的, 可以用 EL
表达式:
<%@ attribute name="x" required="true" rtexprvalue="true" %>
<%@ attribute name="y" required="true" rtexprvalue="true" %>
那这个标记都设定好了, 那我们应该怎样读取这些传入的属性呢? 其实很简单, 标记文件就
是一个
jsp 文件, 这些输入的属性值都存放在作用域中, 所以利用 EL 表达式就可以了:
${x + y}
这个标记文件就完成了, 以下为完整代码, 你也可以直接打开
"/WEB-INF/tags/maths/add.tag":
<%--
maths 标记库 add 标记
功能: 把传入参数相加
参数:
x, 数字 1, 必须
y, 数字 2, 必须
--%>
<%@ tag body-content="empty" pageEncoding="UTF-8" %>
<%-- 声明属性 --%>
<%@ attribute name="x" required="true" rtexprvalue="true" %>
<%@ attribute name="y" required="true" rtexprvalue="true" %>
<%-- 内容 --%>
${x + y}
标记文件完成了, 那我们要怎样在 jsp 文件中调用它呢? 首先我们导入 maths 标记库, 跟调
用标准动作
一样使用 taglib 指令, 但是把 url 属性换成 tagdir, 指定我们自定义标记库的位置, 并给它一
个前缀
名, 以下我们用"maths":
<%@ taglib tagdir="/WEB-INF/tags/maths/" prefix="maths" %>
然後我们就可以调用标准动作一样去使用它啦, 当然必须的属性一定要有, 不然会报错:
<maths:add x="10" y="10"/>
以下为调用 add 标记的 jsp 页的完整代码, 同样的你可以直接打开"/add.jsp":
<%-- maths 标记库 add 标记的演试 --%>
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%-- 调用自定义标记库 maths --%>
<%@ taglib tagdir="/WEB-INF/tags/maths" prefix="maths" %>
<html>
<head>
<title>Maths 标记库 add 标记演试</title>
</head>
<body>
结果:<br/>
<%-- 使用 add 标记 --%>
<maths:add x="10" y="10"/>
</body>
</html>
相信大家都了解基本工作原理了吧? 你可以把标记文件看作一个 jsp 页面, 你可以对它传入
一些参数,
调用它的面页就像包含它一样, 所以你可以标记文件打上一句"HelloWorld", 一段 html 代码,
甚至包
含其他的动作, 调用它的面页就会显示, 大家可以打开"/helloworld.jsp"看一下, 它调用了别
一个
标记库 others 里面的 helloworld 标记.
add 标记是一个空标记, 我们学过 body-content="scriptless", 那我们应该怎样去处理标记主
体的数
据呢? 我们来新增一个新的标记库, 叫 string, 再增加一个标记文件"show.tag", 同样的加上
tab 指
令告诉服务器这个是一个标记文件, 这一次 body-content 属性改为 scriptless:
<%@ tag body-content="scriptless" pageEncoding="UTF-8" %>
然後我们加入一个标准动作:
<jsp:doBody>
它的用途是读入标记的主体内容, 当没有指定要保存到的变量时, 它把内容直接输出到调用
的页面上.
我们写一个"/show.jsp"来简单调用这个 show 标记:
<%-- string 标记库 show 标记的演试 --%>
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%-- 调用自定义标记库 string --%>
<%@ taglib tagdir="/WEB-INF/tags/string" prefix="string" %>
<html>
<head>
<title>string 标记库 trim 标记演试</title>
</head>
<body>
<%-- 使用 show 标记 --%>
<string:show>
这个是标记的主体内容
</string:show>
</body>
</html>
<jsp:doBody>有三个属性:
1) var - 当指定这个变量, 读取的主体内容就会以 String 保存这个变量内, 不会直接输出页
面.
2) varReader - 用途跟 var 一样, 但是保存的不是一个 String, 而是一个 java.io.Reader.
剩余15页未读,继续阅读
wpcxyking
- 粉丝: 13
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页