梦与桥java之家
posts - 37, comments - 8, trackbacks - 0, articles - 0
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
javascript(1)
java与模式(1)
java基础(15)
jsp程序设计(18)
好文转载
随笔档案
2008年10月 (16)
2008年8月 (21)
我的友情链接
平板电脑什么牌子好
平板电脑小八义成立于2011年9月,致力于推荐便宜又好的平板电脑,让对平板电脑有需求的用户花最少的钱,买到最合适的平板电脑。以台电、昂达、原道、蓝魔为代表国产平板系,以良好的性价比、低廉的价格、不错的性能在市场上有很好的表现。平板电脑小八义网站以台电、蓝魔等八个品牌的产品介绍、推荐、评价,辐射更多便宜又好的平板电脑,以求让用户买到物美价廉并能满足自己需要的平板产品。无论现在还是未来,平板电脑小八义都将与市场共同成长,一如既往地为用户服务,做出优秀的推荐。
搜索
最新评论
1. re: request之请求转发
…………
我以为这是代码测试的
2了
--46456
2. re: request之请求转发
456465
--46456
3. re: java基础:高级GUI组件之树
好久没来这儿了,大家还好吗/
--梦与桥
4. re: java基础:高级GUI组件之树
如果collapserow后面的参数变成其他的 象2或者3等 会有什么区别??
--解秀伟
5. re: jsp程序设计:JavaMail
你好~~有需要你的例子,麻烦寄给我下~
yemingye@tom.com
--yz
阅读排行榜
1. java基础:关于java流与文件操作(11210)
2. request之请求转发(7159)
3. jsp程序设计:jstl之JSTL标签库(上)(2674)
4. jsp程序设计:jstl之JSTL标签库(中)(2085)
5. JSP中数据库的一些操作(2015)
评论排行榜
1. jsp程序设计:JavaMail(2)
2. java基础:高级GUI组件之树(2)
3. request之请求转发(2)
4. jsp程序设计:servlet(1)
5. java基础:关于线程(1)
jsp程序设计:jstl之JSTL标签库(下)
Posted on 2008-10-26 23:37
梦与桥
阅读(1673)
评论(0)
编辑
收藏
所属分类:
jsp程序设计
1、简单标签
实现自定义标签的三个步骤:
1)编写标签处理程序(java类)。
2)编写标签库描述符(提供有关标签和库文件的元信息的XML文件)。
3)JSP实现(包含自定义标签的JSP文件)。
2、开发简单的自定义标签
1)标签处理程序wz.java的源代码如下:
package
www.zzz;
import
javax.servlet.jsp.tagext.
*
;
import
java.io.
*
;
import
java.util.
*
;
import
javax.servlet.jsp.
*
;
public
class
wz
extends
SimpleTagSupport
{
private
String name;
private
int
age;
public
void
setName(String name)
{
this
.name
=
name;
}
public
void
setAge(
int
age)
{
this
.age
=
age;
}
public
void
doTag()
throws
JspException, IOException
{
JspWriter out
=
this
.getJspContext().getOut();
out.println(
"
<h3>
"
+
name
+
"
的个人信息:</h3><br>
"
);
getJspContext().setAttribute(
"
name
"
,
"
姓名:
"
+
name
+
"
<br>
"
);
getJspContext().setAttribute(
"
age
"
,
"
年龄:
"
+
age
+
"
<br>
"
);
getJspBody().invoke(
null
);
}
}
2)标签描述文件wz.tld的内容如下:
<?xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
<taglib xmlns
=
"
http://java.sun.com/xml/ns/j2ee
"
xmlns:xsi
=
"
http://www.w3.org/2001/XMLSchema-instance
"
xsi:schemaLocation
=
"
http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd
"
version
=
"
2.0
"
>
<description>
A tag library exercising SimpleTag handlers.
</description>
<tlib-version>
1.0
</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>/SimpleTagLibrary</uri>
<tag>
<description>Outputs Hello
,
World</description>
<name>wz</name>
<tag-class>www.zzz.wz</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>age</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3)引入标签的JSP页面的源码:
<%
@ page contentType
=
"
text/html; charset=GBK
"
%>
<%
@ taglib uri
=
"
/WEB-INF/tld/wz.tld
"
prefix
=
"
mytag
"
%>
<
html
>
<
body
>
<
mytag:wz
name
="张三"
age
="15"
>
${name}
${age}
</
mytag:wz
>
</
body
>
</
html
>
注:编译后的类文件放到WEB-INF/classes目录下,描述文件tld放到WEB-INF/tld目录下(似乎哪个目录下都行,也可直接放到WEB-INF目录下,因为有uri引用吧),tag文件保存到web应用的WEB-INF/tags目录下。
4)对wz.tld文件的解释:
tlib-version:是必须的元素,指定标记库函数的版本号。
short-name:为标记库指定一个缩略名称,用它可以作为标记库的默认名字空间。
info:用来描述标记的文档信息,默认值为空。
uri:用来指定连接到标记的附加源文件,即tld的公共可用副本。
tag:是标记描述文件中最重要的一个元素,有6个子元素:name、tagclass、teiclass、bodycontent、info、attribute。
name:用户指定的标记名称。
tag-class:指定标记处理类,写全名,即带包的类。
bodycontent:说明标记体的类型,分为4种:empty、jsp、scriptless、tagdependent。
empty:表示没有标记体。
jsp:表示标记体可以为jsp代码。
scriptless:表示标记中不能用jsp脚本。
tagdependent:表示标签中的内容交给标记处理程序去进行处理。
info:记录标记的描述信息。
attribute:用来指定零个或者多个标记属性,有三个子元素:name、required、rtextprvalue。
name:必须设定,用来表示大小写敏感属性名称。
required:必须设定,标示属性是否一定要存在,默认为flase,即在标记处理程序中不会自动调用属性
的setAttribue方法。
rtextprvalue:用来说明属性是否可以是动态生成的,但设定为true时,属性即可以是一个常量值,也可
以由表达式生成。
3、标签文件,是JSP2.0新增的功能,目的是让JSP网页开发人员能够直接使用JSP语法来制作标签,而无须了解java语言。其扩展名都是.tag或.tagx。假如Tag File包含其他完整的或片段的Tag File,JSP2.0规范建议扩展名为.tagf。
1)Tag File的7个隐式对象:request、response、out、jspContext、session、application、config。
2)Tag File的指令:
tag 如同JSP网页的page指令。
taglib 如同JSP网页的taglib指令。
include 如同JSP网页的include指令。
attribute 用来设定自定义标签的属性。
variable 用来设TagFile的变量,此变量可回传至JSP网页。
3)新增的几个动作:
<jsp:attribute>标签:用来指定自定义标签属性块,必要时可以作为代码段输出。
<jsp:doBody>标签:告诉容器去处理body,并且将处理结果添加到response中,可以有选择地使用"var"属性,捕获处理的结果,并在下一步进行处理。
<jsp:invoke>标签:对作为属性传递的特定参数进行操作。
4)开发并使用一个日期标签:datetag.tag与datetag.jsp
datetag.tag的代码如下:
<%
@tag pageEncoding
=
"
GBK
"
%>
<%
@tag import
=
"
java.util.*,java.text.*
"
%>
<%
@variable name
-
given
=
"
fulldate
"
scope
=
"
AT_BEGIN
"
%>
<%
DateFormat fullformate
=
DateFormat.getDateInstance(DateFormat.FULL);
Date
now
=
new
Date
();
jspContext.setAttribute(
"
fulldate
"
, fullformate.format(
now
));
%>
<
jsp:doBody
/>
datetag.jsp的代码如下:
<%
@ page contentType
=
"
text/html; charset=GBK
"
%>
<%
@ taglib prefix
=
"
mytag
"
tagdir
=
"
/WEB-INF/tags/
"
%>
<%
@ taglib uri
=
"
http://java.sun.com/jsp/jstl/core
"
prefix
=
"
c
"
%>
<
html
>
<
body
>
<
h1
>
日期tag标签文件演示
</
h1
>
<
mytag:datetag
>
标签体的输出:${fulldate}
<
br
>
</
mytag:datetag
>
页面的输出:${fulldate}
</
body
>
</
html
>
5)开发并使用一个求和标签:sumtag.tag与sumtag.jsp
sumtag.tag的代码如下:
<%
@tag pageEncoding
=
"
GBK
"
%>
<%
@attribute name
=
"
items
"
required
=
"
true
"
rtexprvalue
=
"
true
"
%>
<%
@attribute name
=
"
great
"
fragment
=
"
true
"
%>
<%
@attribute name
=
"
less
"
fragment
=
"
true
"
%>
<%
@taglib prefix
=
"
c
"
uri
=
"
http://java.sun.com/jsp/jstl/core
"
%>
<%
@variable name
-
given
=
"
sum
"
variable
-
class
=
"
java.lang.Object
"
%>
<
c:if
test
="${not empty items}"
>
<
c:forEach
items
="${items}"
var
="item"
>
<
c:set
var
="sum"
value
="${item+sum}"
/>
</
c:forEach
>
<
c:if
test
="${sum>=1000}"
>
<
jsp:invoke
fragment
="great"
/>
</
c:if
>
<
c:if
test
="${sum<1000}"
>
<
jsp:invoke
fragment
="less"
/>
</
c:if
>
</
c:if
>
sumtag.jsp的代码如下:
<%
@ page contentType
=
"
text/html; charset=GBK
"
%>
<%
@ taglib prefix
=
"
mytag
"
tagdir
=
"
/WEB-INF/tags/
"
%>
<%
@ taglib uri
=
"
http://java.sun.com/jsp/jstl/core
"
prefix
=
"
c
"
%>
<
html
>
<
body
>
<
mytag:sumtag
items
="111,222,333"
>
<
jsp:attribute
name
="great"
>
<
font
color
="red"
>
SUM: ${sum}
</
font
>
</
jsp:attribute
>
<
jsp:attribute
name
="less"
>
<
font
color
="blue"
>
SUM: ${sum}
</
font
>
</
jsp:attribute
>
</
mytag:sumtag
>
</
body
>
</
html
>
注:tag文件保存到web应用的WEB-INF/tags目录下。
4、JSP标记与JavaBean有何区别?
答:JavaBean存在先天的不足,它只是可复用组件,独立于运行环境而包装了一些数据和业务逻辑功能,无法获得运行环境信息,无法与JSP页面进行更加深层次的交互。自定义标记机制解决了它的这种的缺陷,标记库的处理类不但具有JavaBean的功能,而且可以把JSP的环境住处传到类中间,不但能得到JSP传递过来的属性,还能与JSP共用页面环境,JSP页面中可以通过session、page与标记处理程序进行数据通信,这一点是javaBean所不能实现的。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
jsp程序设计:Web图表开发之JavaReport组件
jsp程序设计:Web图表开发之JFreeChart组件
jsp程序设计:jstl之JSTL标签库(下)
jsp程序设计:jstl之JSTL标签库(中)
jsp程序设计:jstl之JSTL标签库(上)
jsp程序设计:jstl之el
jsp程序设计:JavaMail
jsp程序设计:JDOM操作xml
jsp程序设计:DOM+SAX操作xml
jsp程序设计:分页显示数据
Powered by:
BlogJava
Copyright © 梦与桥