Filter、Listener
Filter(过滤器)
概念:
对请求参数、请求头以及响应参数进行过滤。一般用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤...。
代码:
复制public class FilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//进行初始化一些信息,服务器启动时
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//进行请求的过滤
System.out.println("filterDemo1被执行了....");
//放行
filterChain.doFilter(servletRequest,servletResponse);
//对响应内容进行过滤
System.out.println("filterDemo1被执行了22....");
}
@Override
public void destroy() {
//进行销毁,服务器正常关闭时
}
}
过滤器web.xml配置:
复制<filter>
<filter-name>demo1</filter-name>
<filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>demo1</filter-name>
<!-- 拦截路径 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
- 拦截路径配置
- 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行。
- 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行。
- 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行。
- 拦截所有资源:/* 访问所有资源时,过滤器都会被执行。
- 注解
@WebFilter
Listener(监听器)
定义:
由事件、事件源、监听器、注册监听组成事件监听机制。注册监听将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码。
方法(举例一个监听ServletContext对象的创建和销毁):
复制public class ServletContextDemo implements ServletContextListener{
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext初始化时执行该代码");
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext销毁时执行该代码");
}
}
监听器web.xml配置:
复制<listener>
<listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
</listener>
- 注解
@WebListener
XFS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2020-06-19 NoSuchMethodError错误