发布时间:2023-01-06 文章分类:编程知识 投稿人:赵颖 字号: 默认 | | 超大 打印

2023-01-06

一、过滤器链

1、含义:如果出现一个请求存在多个过滤器对其过滤,出现过滤器链。

在放行前,过滤器是正序执行,放行后过滤器是倒序执行。

2、过滤器的顺序:是与filter-mapping配置上下文位置有关

二、监听器

1、作用范围:

(1)监听域对象的创建和销毁

域对象:

①ServletContext:应用域(对象是web项目加载时创建,web项目卸载时销毁),监听器接口是“ServletContextListener”。

②HttpSession:会话域(第一次调用getSession创建,销毁是强制销毁),监听器接口是“HttpSessionListener”。

③HttpServletRequest:请求域(有请求就创建,响应结束就销毁),监听器接口是“HttpServletRequestListener”。

(2)监听域对象内共享数据的添加、修改、删除

①添加数据:setAttribute

②删除数据:removeAttribute

③修改数据:setAttribute (如果key值存在,此方法就是修改数据)

2、创建监听器

(1)创建一个类

先创建一个“web Application”的项目,删除“index.jsp”.在src文件夹下的“com.hh”下创建一个类“listener.HelloListener”

(2)实现一个接口

例如“ServletContextListener”

(3)实现接口中的抽象函数

public class HelloListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象创建后执行此方法");
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象销毁后执行此方法");
    }
}

(4)注册监听器

在“WEB-INF”文件夹下的“web.xml”中

<listener>
    <listener-class>com.hh.listener.HelloListener</listener-class>
</listener>

三、Servlet、Filter、Listener的注解方式开发

功能:替代配置文件的。

1、Servlet的注解

(1)位置:在类的上方

(2)代码:

@WebServlet(name="HelloServlet",value="/hello")

注:name就相当于配置文件中的“servlet-name”的值;value就相当于配置文件中“url-pattern”的值

简写形式:name可以省略,当只剩下“value”属性,属性名可以省略,即:

@WebServlet("/hello")

2、Filter的注解

(1)位置:类的上方

(2)代码:

@WebFilter(filterName = "HelloFilter",urlPatterns = "/hello")

3、Listener的注解

(1)位置:类的上方

(2)代码:

@WebListener