JAVA/JSP学习系列之七


Posted in PHP onOctober 09, 2006

一、前言 (本文译自Orion官方站点)

本文将一步一步介绍在Orion Application Server下定义自己的标签,然后,实现该标签的功能,最后用一个jsp例子测试。

二、建立标签,实现该标签的功能。

1.命名package为:com.acme.mytags(为了和原文相同,我不做改动)

package com.acme.mytags;

2.import相关class

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

3.实现javax.servlet.jsp.tagext.Tag接口:

public class HelloWorld implements Tag

{

4.定义局部变量

private PageContext pageContext;

private Tag parent;

5.调用标签开始的实现方法

public int doStartTag() throws javax.servlet.jsp.JspException

{

return SKIP_BODY;

}

注意:这个方法返回 SKIP_BODY,就是标签的body为空的时候,将返回这个值,否则将返回:EVAL_BODY_INCLUDE

6.调用标签结束的实现方法

public int doEndTag() throws javax.servlet.jsp.JspException

{

try

{

pageContext.getOut().write('Hello World!');

}

catch(java.io.IOException e)

{

throw new JspException('IO Error: ' + e.getMessage());

}

return EVAL_PAGE;

}

这样将在jsp文件的自定义标签结束地方输出“Hello World!”

7.还不够,我们还要写下面的方法:

public void release() {}

对于本简单的例子,上面的方法不需要任何实现。

8.JSP的容器要调用下面的方法:

public void setPageContext(final javax.servlet.jsp.PageContext pageContext) {

this.pageContext=pageContext;

}

JSP容器通过上面的方法调用标签,而且上面的方法用来设置标签的PageContext.

9.JSP的容器还要调用下面的方法:

public void setParent(final javax.servlet.jsp.tagext.Tag parent)

{

this.parent=parent;

}

JSP容器通过上面的方法设置标签的parent-Tag,因为每个标签的PageContext都要保留它的parent标签。

10.最后,实现方法:

public javax.servlet.jsp.tagext.Tag getParent()

{

return parent;

}

}

11. 编译标签。

三、描叙标签

现在将要写一个描叙文件,描叙该标签。

1.建立一个taglib.tld文件,

2.taglib.tld是一个XML格式的文本文件,XML的头如下:

'http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd'>

3.描叙标签库

1.0

1.1

mt http://www.orionserver.com/tutorials/tagtut/lesson1/mytags.jar

My first Tag library

4.描叙标签

helloWorld

com.acme.mytags.HelloWorld

empty

A Hello world Tag

5.结束

四、打包

名称为:mytags.jar

其目录结构为:

com/acme/mytags/HelloWorld.class

META-INF/taglib.tld

五、在jsp文件中使用自定义标签

建立hello.jsp如下:

六、测试运行

在orion目录下,建立如下结构,其中,tag是自己建立的,前面的目录是本来就有的。

E:oriondefault-web-app ag

将jar文件和jsp文件全部放到这个目录下。

然后,访问:

http://localhost:[port]/tag/hello.jsp

将出现:
------------------------------------------------------------------
Hello World!
------------------------------------------------------------------

七、恭喜,你已经成功了!

附:mytags.jar和hello.jsp 文件本站下载地址:

http://www.wodejia.net/softdownload/java/orion_tag01.zip(出处:viphot.com)

PHP 相关文章推荐
flash用php连接数据库的代码
Apr 21 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
Php图像处理类代码分享
Jan 19 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
linux下编译安装memcached服务
Aug 03 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
php cli模式下获取参数的方法
May 05 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
PHP开发大型项目的一点经验
Oct 09 #PHP
JAVA/JSP学习系列之六
Oct 09 #PHP
PHP的宝库目录--PEAR
Oct 09 #PHP
PHP中调用JAVA
Oct 09 #PHP
PHP数据库操作面向对象的优点
Oct 09 #PHP
PHP5中MVC结构学习
Oct 09 #PHP
PHP5/ZendEngine2的改进
Oct 09 #PHP
You might like
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
Python装饰器用法实例总结
2018/05/26 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python下载的库包存放路径
2020/07/27 Python
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
社团文化节邀请函
2014/01/10 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
逃课检讨书范文
2015/05/06 职场文书
开学第一周总结
2015/07/16 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
Oracle用户管理及赋权
2022/04/24 Oracle