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中调用ASP.NET的WebService的代码
Apr 22 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
分享3个php获取日历的函数
Sep 25 PHP
php实现word转html的方法
Jan 22 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
PHP 断点续传实例详解
Nov 11 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 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中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
php提交post数组参数实例分析
2015/12/17 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
python中函数传参详解
2016/07/03 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python中p-value的实现方式
2019/12/16 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
品牌推广活动策划方案
2014/08/19 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android