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 strtok()函数的优点分析
Mar 02 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
PHP数组和explode函数示例总结
May 08 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP实现的简单缓存类
Jul 29 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Django的session中对于用户验证的支持
2015/07/23 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
应聘自荐书
2013/10/08 职场文书
职务任命书范本
2014/06/05 职场文书
婚内房产协议书范本
2014/10/02 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
拉贝日记观后感
2015/06/05 职场文书
解决 redis 无法远程连接
2022/05/15 Redis