List onlineUserList = (List)
application。getAttribute(〃onlineUserList〃);
// 第一次使用前,需要初始化
if (onlineUserList == null) {
onlineUserList = new ArrayList();
application。setAttribute(〃onlineUserList〃; onlineUserList);
}
onlineUserList。add(this。username);
}
username 已经通过构造方法传递给 listener,在数据绑定时,可以直接把它放
入用户列表。
与之对应的 valueUnbound()方法,代码如下:
public void valueUnbound(HttpSessionBindingEvent event) {
HttpSession session = event。getSession();
ServletContext application = session。getServletContext();
// 从在线列表中删除用户名
List onlineUserList = (List)
application。getAttribute(〃onlineUserList〃);
81 / 148
…………………………………………………………Page 82……………………………………………………………
onlineUserList。remove(this。username);
System。out。println(this。username + 〃退出。〃);
}
这里可以直接使用 listener 的username 操作在线列表,不必再去担心 session
中是否存在username。
valueUnbound 的触发条件是以下三种情况:
1。 执行 session。invalidate()时。
2。 session 超时,自动销毁时。
3。 执行 session。setAttribute(〃onlineUserListener〃; 〃其他对象〃);或
session。removeAttribute(〃onlineUserListener〃);将 listener 从
session 中删除时。
因此,只要不将 listener 从 session 中删除,就可以监听到 session 的销毁。
例子在 08…02 目录下,可以与08…01 对比一下异同,两者的最终效果是相同的。
82 / 148
…………………………………………………………Page 83……………………………………………………………
第 9 章 封装 taglib 组件
注意
这里讲介绍自定义标签库(taglib),将原本需要写在 jsp 中的 java 代码封装
起来,成为可复用的组件。
taglib 本意是为了弥补 jsp 的先天不足,但它的笨重与复杂也颇为经典,可惜
有的地方又不得不用,如果对其没有耐心尽可跳过。
如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章:
第 10 章 综合电子留言板。
1。 了解 taglib 的使用和制作。
2。 根本不想消除 jsp 中的 java 代码,也不打算写一些可以复用的组件。
9。1。 用 taglib 实现循环
回到联系簿的例子第 5。2 节 “Read(读取)”,不觉得这个 list。jsp 中的 java
代码太碍眼了吗?
{contact。username}
{contact。sex}
{contact。email}
{contact。qq}
{contact。descn}
修改 |
删除
83 / 148
…………………………………………………………Page 84……………………………………………………………
如果能像使用 jsp 动作(action)一样,使用的形式进行循环该多好
啊?可惜 jsp 动作(action)的功能太少了,它没办法进行循环,我们只好自己
实现 taglib。
比较一下使用taglib 前后 jsp 中的样子。
{contact。username}
{contact。sex}
{contact。email}
{contact。qq}
{contact。descn}
修改
| 删除
taglib 的写法和 jsp 动作(action)很相似,是由taglib 前缀,冒号,标签名
三者的组合体。其中 taglib 前缀是用 jsp 指令(direction)定义的。
这里的 jsp 指令 (direction)是专门用来定义标签库的,uri 指定 tld 定义文
件的位置,prefix 指定对应的 taglib 前缀。通过这里的定义才能在下面使用
taglib。
看看 taglib 带给了我们什么?
1。 items=〃{list}〃表示将对 list 变量进行循环操作。
2。 var=〃contact〃表示循环得到的每个元素对应的变量名。
taglib 中循环 list,每获得一个数据就通过
pageContext。setAttribute(〃contact〃; contact);放到 pageContext 中,
接着处理标签中包含的内容,这样标签中间的内容就可以通过
{context。username}的形式获得每一行的数据。
了解过如何使用我们的 taglib,现在可以看具体实现了,首先我们要编写一个
ForTag。java。
84 / 148
…………………………………………………………Page 85……………………………………………………………
1。 第一步,让 ForTag 继承 BodyTagSupport。
BodyTagSupport 专门用来制作带内容的 taglib,它为我们提供了几个好
用的方法来处理数据。
2。 第二步,为 ForTag 设置两个自定义参数:var 和 items。
对应标签中的,我们需
要在 ForTag 中写两个与其名称对应的 setter 方法。
public void setVar(String var) {
this。var = var;
}
public void setItems(Collection items) {
this。iterator = items。iterator();
}
这两个方法会在标签使用的时候,自动获得参数的值,供以后使用。
3。 第三步,让 ForTag 处理标签内容。
public int doStartTag() throws JspException {
this。index = 0;
if (this。process()) {
return EVAL_BODY_INCLUDE;
} else {
return EVAL_PAGE;
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- asp基础入门篇(DOC格式)
- ASP入门与实例-IIS的安装与配置1、运行环境与软件要求Windows 2000 以上(不包括Windows XP Home版)IIS 4.0 以上Microsoft Access 2000Dreamweaver MX2、IIS的安装与配置a.安装IIS若操作系统中还未安装IIS服务器,可打开"控
- 最新章:第23章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章