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

@WebFilter

public class EncodingFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

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

}

@Override

public void doFilter(ServletRequest arg1, ServletResponse arg2, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) arg1;

HttpServletResponse response = (HttpServletResponse) arg2;

request.setCharacterEncoding(“UTF-8”);

chain.doFilter(request, response);

}

@Override

public void destroy() {

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

}

}

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 替换属性 ");

}

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-h4W4hXZk-1715572987446)]

[外链图片转存中…(img-UADJHQgx-1715572987446)]

[外链图片转存中…(img-rLtHj7Ch-1715572987447)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值