Filter 过滤器和 Listener 监听器

/*

在服务器启动后创建Filter对象,调用init方法,只执行一次,用于加载资源

*/

public void init(FilterConfig filterConfig) throws ServletException {

System.out.println(“初始化”);

}

/*

每一次请求被拦截请求资源时调用,可执行多次

*/

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

System.out.println(“oneStar”);

//放行

filterChain.doFilter(servletRequest,servletResponse);

System.out.println(“BackoneStar”);

}

/*

服务器正常关闭时调用distory方法销毁Filter对象,只执行一次,用于释放资源

*/

public void destroy() {

System.out.println(“销毁”);

}

}

5、过滤器配置问题


【1】拦截路径配置

  • 具体资源路径:/index.jsp ==> 只有访问index.jsp资源时,过滤器才会被执行

  • 拦截目录:/user/* ==> 访问/user下的所有资源时,过滤器都会被执行

  • 后缀名拦截:*.jsp ==> 访问所有后缀名问jsp资源时,过滤器都会被执行

  • 拦截所有资源:/* ==> 访问任何资源,过滤器都会被执行

【2】拦截方式的配置

  • 注解配置(设置配置文件的 dispatcherTypes 属性)
  1. REQUEST:默认值,浏览器直接请求资源

  2. FORWARD:转发访问资源

  3. INCLUDE:包含访问资源

  4. ERROR:错误跳转资源

  5. ASYNC:异步访问资源

  • web.xml配置
  1. 配置标签即可

//浏览器直接请求index.jsp资源时,该过滤器会被执行

//@WebFilter(value = “/index.jsp”,dispatcherTypes = DispatcherType.REQUEST)

//只有转发index.jsp资源时,该过滤器才会被执行

//@WebFilter(value = “/index.jsp”,dispatcherTypes = DispatcherType.FORWARD)

//浏览器直接请求index.jsp资源,转发index.jsp资源时,该过滤器会被执行

@WebFilter(value = “/index.jsp”,dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

public class myFilter implements Filter {

6、过滤器链(配置多个过滤器)


【1】执行顺序

  1. 过滤器1

  2. 过滤器2

  3. 资源执行

  4. 过滤器2

  5. 过滤器1

【2】过滤器先后顺序

  • 注解配置:按照类名的字符串比较规则进行比较,值小的先执行

eg:AFilter 和 BFilter,AFilter 先执行

  • web.xml:中谁定义在上面就先执行谁

二、Listener 监听器

==============

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。比如监听在线用户的数量。

1、ServletContextListener 接口


ServletContextListener接口主要是监听ServletContext 对象的创建和销毁,用到的方法有:

  • void contextDestoryed(ServletContextEvent sce):ServletContext对象销毁之前会调用该方法

  • void contextInitialized(ServletContextEvent sce):ServletContext 对象创建后会调用该方法

2、开发步骤


  1. 定义一个类,实现 ServletContextListener 接口

  2. 重写方法

  3. 配置

  4. web.xml 配置

  5. 注解配置

@WebListener

public class myListener implements ServletContextListener {

/*

监听ServletContext对象,服务器启动后自动创建ServletContext对象

*/

@Override

public void contextInitialized(ServletContextEvent servletContextEvent) {

//获取ServletContext对象

ServletContext servletContext = servletContextEvent.getServletContext();

//加载文件资源

String intiparameter = servletContext.getInitParameter(s);

//获取真实路径

String realPath = servletContext.getRealPath(intiparameter);

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

0329)]

Elasticsearch 24 题 +Memcached + Redis 40题:

[外链图片转存中…(img-S9AIOW69-1721832960330)]

Spring 26 题+ 微服务 27题+ Linux 45题:

[外链图片转存中…(img-RNyoF9zn-1721832960330)]

Java面试题合集:

[外链图片转存中…(img-20WXDtZT-1721832960330)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值