`
lbyzx123
  • 浏览: 477988 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet、Filter、Listener执行的先后顺序

    博客分类:
  • J2EE
 
阅读更多
Listener在web容器中优先于Fiter执行,即在Filter之前执行
Fiter在web容器中优先于Servlet执行,即在Servlet之前执行
ServletContextListener最先执行,容器一启动便执行它的contextInitialized方法。
示例代码如下:
 
package com.anxiesoft.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyListener implements HttpSessionListener, ServletContextListener,
  HttpSessionBindingListener {
 private static Map hUserName = new HashMap();

 @Override
 public void sessionCreated(HttpSessionEvent arg0) {
  System.out.println(".....sessionCreated.......");
 }

 @Override
 public void sessionDestroyed(HttpSessionEvent arg0) {
  System.out.println(".....sessionDestroyed.......");
  hUserName.remove(arg0.getSession().getId());
 }

 public static boolean isOnline(HttpSession session) {
  boolean flag = true;
  if (hUserName.containsKey(session.getId())) {
   flag = true;
  } else {
   flag = false;
  }
  return flag;
 }

 public static boolean isAlreadyEnter(HttpSession session, String sUserName) {
  boolean flag = false;
  if (hUserName.containsValue(sUserName)) {
   flag = true;
   // 遍历原来的hUserName,删除原用户对应的SessionId(即删除原来的sessionId和Username)
   Iterator iter = hUserName.entrySet().iterator();
   while (iter.hasNext()) {
    Map.Entry entry = (Map.Entry) iter.next();
    Object key = entry.getKey();
    Object value = entry.getValue();
    if (((String) value).equals(sUserName)) {
     hUserName.remove(key);
    }
   }
   hUserName.put(session.getId(), sUserName);
   System.out.println("hUserName = " + hUserName);
  } else {
   flag = false;
   hUserName.put(session.getId(), sUserName);
   System.out.println("hUserName = " + hUserName);
  }
  return flag;
 }

 @Override
 public void contextDestroyed(ServletContextEvent arg0) {
  System.out.println("......contextDestroyed..........");
 }

 @Override
 public void contextInitialized(ServletContextEvent arg0) {
  System.out.println("......contextInitialized..........");
 }

 @Override
 public void valueBound(HttpSessionBindingEvent arg0) {
  System.out.println("......valueBound..........");
 }

 @Override
 public void valueUnbound(HttpSessionBindingEvent arg0) {
  System.out.println("......valueUnbound..........");
 }
}


 
分享到:
评论

相关推荐

    web.xml 中的listener、 filter、servlet 加载顺序及其详解.doc

    Web.xml 中的 listener、filter、servlet 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...

    关于web.xml配置文件servlet,filter,listener加载顺序

    关于filter、servlet在web.xml配置及加载顺序

    web.xml配置servlet,filter,listener加载顺序源代码

    本源码将详细介绍web.xml配置中servlet,filter,listener的加载顺序,可以让学习者更好的了解web.xml各种属性配置,自己写的东西,不足之处请大家见谅,顺便收点积分也好下资料,谢谢

    web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序

    ### web.xml文件中配置(servlet, spring, filter, listener)的加载顺序 在Java Web应用开发中,`web.xml`文件是整个Web应用程序的核心配置文件之一,它定义了Servlet容器如何启动、初始化以及配置各个组件如...

    servlet_filter_listener

    在Java Web开发中,`Servlet`、`Filter`和`Listener`是三个核心组件,它们在构建动态Web应用程序中扮演着重要角色。本篇将详细阐述这三个概念以及它们的工作原理和应用场景。 首先,我们来了解`Servlet`。Servlet是...

    web.xmllistener、filter、servlet加载顺序.pdf

    在Web应用开发中,了解`web.xml`中的监听器(XMLListener)、过滤器(Filter)和Servlet的加载顺序是至关重要的。这些组件是Java Servlet规范的一部分,用于增强和控制Web应用的行为。以下是对这些概念的详细说明: ...

    Filter和Listener

    - **执行顺序**:Filter的执行遵循配置顺序,而Listener的执行依赖于事件的发生顺序。 - **应用场景**:Filter更适合用于处理请求的前置和后置操作,如权限检查、编码转换等;而Listener适用于监听和响应Web应用的...

    Servlet中的Filter

    按照配置顺序,先执行Listener,然后是Filter,接着是Struts拦截器,最后是Servlet。 - Filter的执行顺序取决于它们在web.xml中的配置顺序。每个Filter的doFilter()方法会被调用,直到请求达到Servlet,或者在...

    web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理

    本文将详细介绍web.xml中的Servlet、Bean、Filter、Listener加载顺序,并探讨其内部执行顺序。 首先,我们需要了解web.xml文件的基本结构。web.xml文件主要包含了四个部分:Servlet、Bean、Filter、Listener。其中...

    Listener、Filter、Servlet与Java Web项目初始化项目例子 源代码

    通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。

    Java servlet、filter、listener、interceptor之间的区别和联系

    2. **加载顺序**:web.xml中的加载顺序通常是context-param -> listener -> filter -> servlet,而Interceptor的执行顺序取决于框架的规则。 3. **职责**:Servlet主要负责业务逻辑处理,Filter用于处理请求和响应...

    day19_Filter&Listener教案1

    - 服务器按照Filter链的反向顺序执行每个Filter的`doFilter()`方法的剩余部分,处理响应。 2. **过滤器生命周期**: - 初始化:当应用服务器启动,并且Filter类被加载时,调用`init(FilterConfig)`方法。 - 过滤...

    SpringBoot之Filter和Listener简单运用.rar

    在实际项目中,应根据具体需求选择合适的Filter和Listener,合理配置它们的执行顺序和优先级,以达到最佳效果。同时,理解Spring Boot的自动配置机制和Bean生命周期也是正确使用Filter和Listener的关键。 总的来说...

    servlet-api-3.0.jar包

    此外,过滤器链的执行模式也得到了改进,可以更好地控制过滤器的执行顺序。 6. **WebSocket支持**:虽然Servlet 3.0本身不包含WebSocket API,但它为WebSocket提供了基础框架,使得服务器端可以很容易地与WebSocket...

    JSPservlet中web.xml详细配置指南(包含所有情况)

    本文将对 web.xml 的配置进行详细的解释,包括加载顺序、context-param、listener、filter、servlet 等配置节的使用和顺序。 加载顺序 ---------- 加载顺序是指 web.xml 文件中的元素出现的顺序,它对 Web 应用...

    Servlet3.0新特性,Servlet3新特性,Servlet3注解,Servlet3异步处理【蕃薯耀】

    最后,Servlet3.0还支持了更灵活的Filter配置,例如通过`@WebFilter`注解指定多个URL模式或Servlet匹配规则,以及使用`@Priority`注解设置过滤器的执行顺序。 总的来说,Servlet3.0的新特性为Java Web开发带来了...

    Java Servlet API 2.5

    通过配置web.xml文件,开发者可以定义多个Filter,并设置它们的执行顺序。 Listener是Servlet API中的事件监听器,用于监听Web应用中的特定事件,如会话创建、销毁、请求参数改变等。通过实现特定的监听器接口,如...

    超级注意复杂整合环境中的Filter-Mapping的顺序--配置单点登陆及UrlRewrite有感

    `web.xml`是Java Web应用的部署描述符,它定义了应用的配置信息,包括Servlet、Filter和Listener的声明及其Mapping。在这个文件中,我们可以通过`<filter>`和`<filter-mapping>`标签来定义Filter及其映射。例如: `...

    servlet api说明文档

    FilterChain则用于组织多个Filter的执行顺序。 8. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。服务器在启动时加载Servlet,初始化一次,然后为每个请求服务,最后在服务器关闭...

    Web_5_Listener和Filter1

    过滤器链的执行顺序与<filter‐mapping>的配置顺序相关。当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。 过滤器的优先级是指在一个web应用中,可以开发...

Global site tag (gtag.js) - Google Analytics