`
webcode
  • 浏览: 6065923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

11月7日简单标签与Listener培训日记

阅读更多

针对汪大伦的提问,解释Session中为什么也可能出现线程安全的问题,在服务器端比较缓慢时,一个表单可以被提交多次,这时候就会出现多个线程访问同一个Session的情况。所以,我们是要注意存放在Session中的Cart对象本身应该是线程安全的。
前几天雷辉老师在讲解ibatis的JPetStore例子时,我们看到某个业务对象中的一个方法为两个成员变量进行了赋值,结果JSP页面的显示数据就发生了修改,当时觉得很奇怪,我们的习惯思维是将数据显示在某个域范围中,JSP然后显示域范围中的数据。后来雷辉研究明白了,JSP页面显示的就是那个业务对象,业务对象内部的成员变量发生了修改,就导致了JSP页面的显示数据发生变化。

简单标签的setParent方法只在有父标签时才被调用。简单标签只有一个doTag方法来处理标签的业务功能,其标签体用JSPFragment对象来表示,且标签体中不能包含JSP脚本片段。在doTag方法中调用getJspBody().invoke()方法执行JspFragment中包含的内容,并把它输出到某个Writer中。想想如何修改简单标签体中的内容后再输出呢?将标签体先输出到StringWriter中,再从StringWriter中取出内容进行修改,最后输出修改后的内容。

在doTag方法中抛出SkipPageException异常,就可以结束页面后面部分的执行。

<jsp:attribute></jsp:attribute>标签中的内容也是用JSPFragment来表示的。

对于Servlet 2.3规范,<taglib>元素在web.xml文件中的情况是:<web-app><tag-lib></tag-lib></web-app>;对于Servlet 2.4规范,<taglib>元素在web.xml文件中的情况是:<web-app><jsp-config><tag-lib></tag-lib><jsp-config></web-app>。

如何将自定义标签处理类及相关的支持类打包成jar文件对外发布,标签库描述符文件(tld)文件也应该连同打包到jar文件中,其位置应该放置在jar包中的META-INF目录及其子目录中。

接着讲解了java web中的listener和Spring中提供的ContextLoaderListener的功能原理。

冯伟立实验发现的一个问题:在common-logging包中有两个jar文件,一个是commons-logging-api-1.1.jar,一个是common-logging-1.1.jar。在项目中要用后者,如果用前者的话,将总是调用JDK标准的Log工具。
冯伟立自己做了一个digester小练习,有如下一些经验问题:
d.addObjectCreate方法表示遇到标签开始创建对象,d.addCallMethod方法表示遇到标签结束调用方法。d.addSetNext表示遇到标签结束时调用栈中的第二个对象的方法,并将当前的对象作为参数传递给该方法。栈顶的对象是什么时候出栈的呢?以后问问梁言兵老师。估计是遇到对象对应的结束标签就出栈,与程序代码的编写顺序无关。

张艳青发现IE浏览器中的一个JavaScript问题:
<div id="ok">ok</div>
<input name="submit" value="...">
得到div对象后,再调用其nextSibling方法,可以得到<input>对象。
<input name="submit" value="...">
<div id="ok">ok</div>
得到<input>对象后,再调用其nextSibling方法,无法得到<div>对象,得到的是一个代表回车换行的对象。


小技巧:
在eclipse中直接在某个类后面编写其实现的接口,然后按CTRL+1,即可生成接口中定义的方法。

分享到:
评论

相关推荐

    handler与listener的区别

    - `handler`是`listener`的一个特殊形式,更适用于简单、直接的事件响应,特别是当需要对组件的首要事件进行处理时。 - `listener`则更适合于复杂的事件管理,包括对多个事件的监听,以及需要在事件触发时执行多个...

    listener我的listener listener我的listener

    在给定的标签"listener"下,我们可以推测这个压缩包可能包含了与Java编程或Web开发相关的Listener实现代码、示例或者教程。由于文件列表只给出"listener"这一项,没有具体的文件名,无法提供更详细的内容分析。通常...

    TcpListener异步通信

    本文将深入探讨如何使用C#实现一个简单的TcpListener来支持异步通信,允许多客户端同时连接。 首先,我们需要理解TcpListener类在C#中的作用。TcpListener是.NET Framework提供的一个类,用于监听特定IP地址和端口...

    TcpListener 监听服务端

    在 `TcpTest` 文件中,可能包含了一个简单的 TcpListener 示例代码,用于演示如何创建和运行一个监听服务。通过分析和运行这个代码,你可以更深入地理解 TcpListener 的工作方式。 总的来说,TcpListener 是构建...

    servlet--listener 各种接口的简单例子

    本教程将深入讲解如何使用Listener的各种接口,并通过简单易懂的例子帮助你快速掌握这些知识。 首先,我们来了解什么是Servlet监听器(Listener)。Servlet监听器是实现了Java Servlet API中特定接口的类,当Web...

    SpringBoot整合Listener的两种方式.docx

    在Spring Boot应用中,整合Listener主要是为了监听应用的生命周期事件,例如在应用启动或关闭时执行特定的操作。这里我们讨论两种整合Listener的方式。 ### 方式一:通过注解扫描完成Listener组件的注册 1. **创建...

    event_listener.7z

    此外,`event_listener.jsx` 可能会使用到其他 ExtendScript 对象和方法,比如 `app.documents` 集合来遍历所有打开的文档,`event` 对象来获取与触发事件相关的详细信息,或者 `dialogs` 来与用户进行交互。...

    Unity 网络 之 TcpListener 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端).rar

    Unity 网络 之 TcpListener 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端) 在Unity中用 TcpClient、TcpListener 两个封装类和 NetworkStream 来实现一个简单的网络通讯 demo 实现原理 1、首先...

    C#利用TcpClient/TcpListener类结合网络流建立的简单文件传输软件

    在C#编程环境中,开发基于TCP协议的文件传输软件是一项常见的任务,这通常涉及到使用`TcpClient`和`TcpListener`类以及网络流的概念。这两个类是.NET Framework提供的,用于实现客户端和服务器之间的TCP通信。下面...

    Listener单点登录与显示在线用户

    在本场景中,“Listener单点登录与显示在线用户”涉及到的技术点主要是网络应用中的身份验证、会话管理和实时用户状态监控。 单点登录(Single Sign-On, SSO)是一种允许用户通过一次认证过程访问多个应用系统的...

    listener监听器demo

    在Java编程语言中,`Listener`接口是一种常见的事件处理机制,它主要用于实现对象之间的通信。在Java Swing和Java AWT库中,`Listener`接口被广泛应用于用户界面(UI)组件,以响应用户的操作,例如按钮点击、窗口...

    TcpClient TcpListener Demo

    TcpClient TcpListener Demo 案例 TcpClient TcpListener Demo 案例 TcpClient TcpListener Demo 案例 TcpClient TcpListener Demo 案例 QQ:574311505

    RAC listener.ora详解.docx

    Oracle RAC 监听器配置文件 listener.ora 详解 Oracle RAC 监听器配置文件 listener.ora 是一个核心配置文件,用于配置 Oracle Net Listener 的参数。本文将详细介绍 listener.ora 文件的配置参数、协议地址参数、...

    C# TcpListener/TcpClient Demo

    在.NET框架中,`TcpListener`和`TcpClient`是两个关键类,用于实现基于TCP协议的网络通信。本文将详细解析这两个类的功能、用法以及如何通过它们创建一个简单的C# TCP通信示例。 首先,`TcpListener`类是服务器端的...

    java jsp listener小用法

    四、监听器的扩展与优化 1. 登录成功的判断:在requestInitialized()方法中,可以进一步判断用户是否真正登录成功,只有成功时才增加登录计数。 2. 多线程处理:当并发访问较高时,考虑使用线程安全的数据结构(如...

    listener与tnsnames配置示例

    Oracle数据库系统是企业级广泛应用的关系型数据库管理系统,其在服务器端的网络通信主要依赖于Listener(监听器)和tnsnames.ora配置。这两个组件对于数据库的连接和管理至关重要。本文将详细介绍这两个组件以及如何...

    c# tcplistener tcp监控

    当有客户端连接时,该方法会返回一个`TcpClient`对象,表示与客户端的连接: ```csharp TcpClient client = listener.AcceptTcpClient(); ``` 4. 接下来,可以通过`client.GetStream()`获取到一个`NetworkStream`...

    mac_Listener.dmg

    mac_Listener

    针对Oracle的TNS listener的攻击原理及方法介绍

    由于TNS Listener默认监听1521端口,攻击者会尝试通过该端口与TNS Listener建立连接。攻击者可以使用各种工具,例如文中提及的tnscmd.pl脚本,来检测Oracle数据库的开启状态、版本信息和服务状态等。通过这些信息,...

Global site tag (gtag.js) - Google Analytics