springboot学习系列六:springboot项目中filter和listener的使用

目录

 

Springboot项目中使用filter和listener

Filter在springboot项目中的应用

Listener在springboot项目中的应用


Springboot项目中使用filter和listener

 

Filter在springboot项目中的应用

package com.example.demo.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName = "userFilter",urlPatterns = "/*")
public class UserFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("注意,注意:这是我过滤器filter的初始化方法!");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("注意,注意:这是我过滤器filter的dofilter方法!");
    }

    @Override
    public void destroy() {
        System.out.println("注意,注意:这是我过滤器filter的销毁方法!");
    }
}
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

springboot学习系列六:springboot项目中filter和listener的使用_第1张图片

 

在springboot项目中使用filter,相应的类需要实现filter类,类需要添加“@WebFilter(filterName=””,urlPattern=””)”注解。入口类*Application.java需要添加注解“@ServletComponentScan”。

(1)注解@WebFilter

此注解用来将一个类声明为过滤器。该注解常用的属性有:

1)filterName:用于指定过滤器的name,与xml文件中的标签作用相同。

2)urlPattern:用来指定一组过滤器的URL匹配规则,与xml配置文件中的标签作用相同。

3)value:作用跟urlPattern属性相同,但是两者不能够同时使用。

(2)注解@ServletComponentScan

在springboot的入口类或者主类中使用此注解后,servlet、filter、listener可通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。

Listener在springboot项目中的应用

package com.example.demo.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class UserListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("注意,注意:这是我的listener的初始化方法!");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("注意,注意:这是我的listener的销毁方法!");
    }
}
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

 

springboot学习系列六:springboot项目中filter和listener的使用_第2张图片

在springboot项目中使用监听器,相应的类需要根据需要实现不同的监听类,类都需要添加“@WebListener”注解。入口类*Application.java需要添加注解“@ServletComponentScan”。

(1)监听器listener

1)根据监听对象的不同,我们可以将监听器分为:ServletContext、HttpSession、ServletRequest三种。

ServletContext监听ServletContext对象的创建和销毁。(application级别的,在整个web中只有一个)

ServletContextListener其接口方法分别为:

contextInitialized(ServletContextEvent arg0)   -- 创建时执行

contextDestroyed(ServletContextEvent arg0)  -- 销毁时执行

HttpSession监听session对象的创建和销毁。(session级别的,对应每个对话)

HttpSessionListener其接口方法分别为:

sessionCreated(HttpSessionEvent se)   -- 创建时执行

sessionDestroyed(HttpSessionEvent se) -- 销毁时执行

ServletRequest监听request对象的创建和销毁。(request级别的,对应客户每次发出的请求)

ServletRequestListener 其接口方法分别为:

requestInitialized(ServletRequestEvent sre) -- 创建时执行

 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行

 

2)根据监听事件可以分为监听对象创建、销毁,如监听对象域中属性的添加和删除。

ServletContextAttribute监听servletContext对象中属性的改变

ServletContextAttributeListener 其接口方法分别为:

attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行

attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行

attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行

HttpSessionAttribute监听session对象中属性的改变

HttpSessionAttributeListener其接口方法分别为:

attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行

attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行

attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行

ServletRequestAttribute监听request对象中属性的改变

ServletRequestAttributeListener其接口方法分别为:

attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行

attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行

attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行

(2)监听器的作用

1)监听web应用中某些对象、信息的创建、销毁、增加、修改、删除等动作的发生,然后做出相应的响应处理。

2)统计在线人数和在线用户。

3)系统加载时进行信息的初始化。

4)统计网站的访问量。

5)记录用户的访问路径等。

你可能感兴趣的:(java进阶之路,Java基础,过滤器,java,spring,boot)