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 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...
关于filter、servlet在web.xml配置及加载顺序
本源码将详细介绍web.xml配置中servlet,filter,listener的加载顺序,可以让学习者更好的了解web.xml各种属性配置,自己写的东西,不足之处请大家见谅,顺便收点积分也好下资料,谢谢
### web.xml文件中配置(servlet, spring, filter, listener)的加载顺序 在Java Web应用开发中,`web.xml`文件是整个Web应用程序的核心配置文件之一,它定义了Servlet容器如何启动、初始化以及配置各个组件如...
在Java Web开发中,`Servlet`、`Filter`和`Listener`是三个核心组件,它们在构建动态Web应用程序中扮演着重要角色。本篇将详细阐述这三个概念以及它们的工作原理和应用场景。 首先,我们来了解`Servlet`。Servlet是...
在Web应用开发中,了解`web.xml`中的监听器(XMLListener)、过滤器(Filter)和Servlet的加载顺序是至关重要的。这些组件是Java Servlet规范的一部分,用于增强和控制Web应用的行为。以下是对这些概念的详细说明: ...
- **执行顺序**:Filter的执行遵循配置顺序,而Listener的执行依赖于事件的发生顺序。 - **应用场景**:Filter更适合用于处理请求的前置和后置操作,如权限检查、编码转换等;而Listener适用于监听和响应Web应用的...
按照配置顺序,先执行Listener,然后是Filter,接着是Struts拦截器,最后是Servlet。 - Filter的执行顺序取决于它们在web.xml中的配置顺序。每个Filter的doFilter()方法会被调用,直到请求达到Servlet,或者在...
本文将详细介绍web.xml中的Servlet、Bean、Filter、Listener加载顺序,并探讨其内部执行顺序。 首先,我们需要了解web.xml文件的基本结构。web.xml文件主要包含了四个部分:Servlet、Bean、Filter、Listener。其中...
通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。
2. **加载顺序**:web.xml中的加载顺序通常是context-param -> listener -> filter -> servlet,而Interceptor的执行顺序取决于框架的规则。 3. **职责**:Servlet主要负责业务逻辑处理,Filter用于处理请求和响应...
- 服务器按照Filter链的反向顺序执行每个Filter的`doFilter()`方法的剩余部分,处理响应。 2. **过滤器生命周期**: - 初始化:当应用服务器启动,并且Filter类被加载时,调用`init(FilterConfig)`方法。 - 过滤...
在实际项目中,应根据具体需求选择合适的Filter和Listener,合理配置它们的执行顺序和优先级,以达到最佳效果。同时,理解Spring Boot的自动配置机制和Bean生命周期也是正确使用Filter和Listener的关键。 总的来说...
此外,过滤器链的执行模式也得到了改进,可以更好地控制过滤器的执行顺序。 6. **WebSocket支持**:虽然Servlet 3.0本身不包含WebSocket API,但它为WebSocket提供了基础框架,使得服务器端可以很容易地与WebSocket...
本文将对 web.xml 的配置进行详细的解释,包括加载顺序、context-param、listener、filter、servlet 等配置节的使用和顺序。 加载顺序 ---------- 加载顺序是指 web.xml 文件中的元素出现的顺序,它对 Web 应用...
最后,Servlet3.0还支持了更灵活的Filter配置,例如通过`@WebFilter`注解指定多个URL模式或Servlet匹配规则,以及使用`@Priority`注解设置过滤器的执行顺序。 总的来说,Servlet3.0的新特性为Java Web开发带来了...
通过配置web.xml文件,开发者可以定义多个Filter,并设置它们的执行顺序。 Listener是Servlet API中的事件监听器,用于监听Web应用中的特定事件,如会话创建、销毁、请求参数改变等。通过实现特定的监听器接口,如...
`web.xml`是Java Web应用的部署描述符,它定义了应用的配置信息,包括Servlet、Filter和Listener的声明及其Mapping。在这个文件中,我们可以通过`<filter>`和`<filter-mapping>`标签来定义Filter及其映射。例如: `...
FilterChain则用于组织多个Filter的执行顺序。 8. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。服务器在启动时加载Servlet,初始化一次,然后为每个请求服务,最后在服务器关闭...
过滤器链的执行顺序与<filter‐mapping>的配置顺序相关。当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。 过滤器的优先级是指在一个web应用中,可以开发...