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实现文件上传二法
Oct 09 PHP
如何过滤高亮显示非法字符
Oct 09 PHP
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
用PHP实现的随机广告显示代码
Jun 14 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
python实现网页链接提取的方法分享
2014/02/25 Python
Python分治法定义与应用实例详解
2017/07/28 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python 实现IP子网计算
2021/02/18 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
中专自我鉴定范文
2013/10/16 职场文书
财务管理专业推荐信
2013/11/19 职场文书
读书活动总结范文
2014/04/26 职场文书
个人承诺书格式
2014/06/03 职场文书
考试保密承诺书
2014/08/30 职场文书
给老师的感谢信
2015/01/20 职场文书
2015年度企业工作总结
2015/05/21 职场文书
委托收款证明
2015/06/23 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
教师个人教学反思
2016/02/23 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python