Servlet监听器和过滤器的快速使用和配置(基于注解配置)

FirstFilter

package com.gxwz.filter;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebFilter (filterName=“FirstFilter”,value={“/*”})

public class FirstFilter implements Filter {

@Override

public void init(FilterConfig arg0) throws ServletException {

System.out.println(this.toString()+" 已初始化…");

}

@Override

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

String ip = request.getRemoteAddr();

String url = request.getRequestURL().toString();

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

Date d = new Date();

String date = sdf.format(d);

System.out.printf(“%s %s 访问了 %s%n”, date, ip, url);

chain.doFilter(request, response);

}

@Override

public void destroy() {

System.out.println(this.toString()+" 已销毁…");

}

}

ContextAttributeListener

package com.gxwz.listener;

import javax.servlet.ServletContextAttributeEvent;

import javax.servlet.ServletContextAttributeListener;

import javax.servlet.annotation.WebListener;

@WebListener

public class ContextAttributeListener implements ServletContextAttributeListener {

@Override

public void attributeAdded(ServletContextAttributeEvent scae) {

System.out.println("context 增加属性 ");

System.out.println(“context 属性是” + scae.getName());

System.out.println(“context 的值是” + scae.getValue());

}

@Override

public void attributeRemoved(ServletContextAttributeEvent scae) {

System.out.println("context 移除属性 ");

}

@Override

public void attributeReplaced(ServletContextAttributeEvent scae) {

System.out.println(“context 替换属性”);

}

}

ContextListener.java

package com.gxwz.listener;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

@WebListener

public class ContextListener implements ServletContextListener {

//public class ContextListener extends ContextLoaderListener {

@Override

public void contextDestroyed(ServletContextEvent sce) {

System.out.println("web 应用销毁 ");

}

@Override

public void contextInitialized(ServletContextEvent sce) {

System.out.println("web 应用初始化 ");

}

}

RequestAttributeListener.java

package com.gxwz.listener;

import javax.servlet.ServletRequestAttributeEvent;

import javax.servlet.ServletRequestAttributeListener;

import javax.servlet.annotation.WebListener;

@WebListener

public class RequestAttributeListener implements ServletRequestAttributeListener{

@Override

public void attributeAdded(ServletRequestAttributeEvent srae) {

System.out.println("request 增加属性 ");

System.out.println(“属性是” + srae.getName());

//System.out.println(“值是” + srae.getValue());

}

@Override

public void attributeRemoved(ServletRequestAttributeEvent srae) {

System.out.println("request 移除属性 ");

}

@Override

public void attributeReplaced(ServletRequestAttributeEvent srae) {

System.out.println("request 替换属性 ");

}

}

RequestListener.java

package com.gxwz.listener;

import javax.servlet.ServletRequestEvent;

import javax.servlet.ServletRequestListener;

import javax.servlet.annotation.WebListener;

@WebListener

public class RequestListener implements ServletRequestListener {

@Override

public void requestDestroyed(ServletRequestEvent sre) {

System.out.println("销毁了一个Request ");

}

@Override

public void requestInitialized(ServletRequestEvent sre) {

System.out.println("创建了一个Request ");

}

}

SessionAttributeListener.java

package com.gxwz.listener;

import javax.servlet.annotation.WebListener;

import javax.servlet.http.HttpSessionAttributeListener;

import javax.servlet.http.HttpSessionBindingEvent;

@WebListener

public class SessionAttributeListener implements HttpSessionAttributeListener {

@Override

public void attributeAdded(HttpSessionBindingEvent event) {

System.out.println("session 增加属性 ");

System.out.println(“属性是” + event.getName());

System.out.println(“值是” + event.getValue());

}

@Override

public void attributeRemoved(HttpSessionBindingEvent event) {

System.out.println("session 移除属性 ");

}

@Override

public void attributeReplaced(HttpSessionBindingEvent event) {

System.out.println("session 替换属性 ");

}

}

SessionListener.java

package com.gxwz.listener;

import javax.servlet.annotation.WebListener;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

@WebListener

public class SessionListener implements HttpSessionListener {

@Override

public void sessionCreated(HttpSessionEvent se) {

System.out.println("监听到 session 创建, sessionid 是: " + se.getSession().getId());

}

@Override

public void sessionDestroyed(HttpSessionEvent se) {

System.out.println("监听到 session 销毁, sessionid 是: " + se.getSession().getId());

}

}

/**

  • 如果是第一次访问,都会触发session创建,后续访问不会触发session的创建

  • 关闭浏览器,再访问,也会触发session的创建。 但是有的浏览器,即便是关闭了,

  • 下一次打开,也会发送以前sessionid到服务器,这样服务器就不会创建新的session。

  • session的销毁不易观察到,一般说来服务器会设置session存活时间为30分钟。

  • 所以需要等待才能观察到销毁

  • 注: 在重启tomcat测试之前, 要删除D:\tomcat\work\Catalina\localhost_\SESSIONS.ser 这个文件。

  • 这个文件是tomcat存放以前的session的,为了观察到创建session的活动,

  • 需要tomcat重启之前把以前的session都清除掉,才能观察到新创建session的活动

  • @author com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值