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 相关文章推荐
PHP在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
配置支持SSI
Nov 25 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
20个PHP常用类库小结
Sep 11 PHP
php实例分享之二维数组排序
May 15 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php获取apk包信息的方法
Aug 15 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
简单谈谈 php 文件锁
Feb 19 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 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
PHP 文件缓存的性能测试
2010/04/25 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
js实现烟花特效
2020/03/02 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
python实现读取并显示图片的两种方法
2017/01/13 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
详解python3中zipfile模块用法
2018/06/18 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
python统计字符的个数代码实例
2020/02/07 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
2014年大学生自我评价
2014/01/19 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
学校欢迎标语
2014/06/18 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年教育工作总结
2014/11/26 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
高质量“欢迎词”
2019/04/03 职场文书
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技