一、Listener监听器
1、概述
Listener是JavaEE的规范(接口)
作用:监听某种事物的变化,通过回调函数,反馈给客户(程序)去做一些响应的处理。
2、使用
ServletContextListener监听器
它监听ServletContext对象的创建和销毁。当创建和销毁时调用方法contextInitialized
和contextDestroyed
使用步骤:
1、编写实现类,实现方法
2、web.xml配置Listener
<listener>
<listener-class>xxx</listener-class>
</listener>
二、Filter过滤器
1、概述
Listener是JavaEE的规范(接口)
作用:拦截请求,过滤响应
拦截请求场景:
- 权限检查
- 日记操作
- 事务管理
2、使用
使用步骤:
1、编写实现类实现接口Filter,实现doFilter方法
2、web.xml配置filter和filter-mapping
<filter>
<filter-name>filterName</filter-name>
<filter-class>xxx</filter-class>
</filter>
<filter-mapping>
<filter-name>filterName</filter-name>
<url-pattern>/</url-pattern>
</>
3、Filter生命周期
1、构造器方法
2、init初始化方法
1/2步,在web启动的时候执行(Filter已经创建)
3、doFilter过滤方法
每次拦截请求,执行一次
4、destroy销毁方法
停止web,执行(销毁Filter对象)
4、FilterConfig类
Filter过滤器的配置文件类
每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息
FilterConfig类的作用是获取filter过滤器的配置内容
1、获取Filter的名称filter-name的内容:.getFilterName()
2、获取在Filter中配置的init-param初始化参数.getInitParameter("")
3、获取ServletContext对象:.getServletContext()
5、FilterChain类
6、Filter的拦截路径
- 精确匹配
/xxx.html
- 目录匹配
/*
- 后缀名匹配
*.html
(不能以/开头)
三、Servlet
1、概述
规范(接口)
是运行在服务器上的一个java小程序。可以接收客户端发送过来的请求,并响应数据给客户端
2、实现
1、编写实现Servlet接口
2、实现service方法,处理请求,响应数据(service方法专门用来处理请求和响应的)
3、到web.xml中配置servlet程序的访问地址
<servlet>
<servlet-name>ServletName</servlet-name>
<servlet-class>xxx</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletName</servlet-name>
<url-pattern>/xxx</url-pattern>
</servlet-mapping>
3、url访问过程
4、Servlet的生命周期
1、servlet构造器方法
2、init初始化方法
- 1/2在第一次访问,调用
3、service方法
- 每次访问调用一次
4、destroy销毁方法
- 停止web调用
继承HttpServlet
重写doGet(doPost)方法
5、ServletConfig
Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们负责使用。
Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象。
作用:
- 可以获取Servlet程序的别名servlet-name的值
.getServletName()
- 获取初始化值init-param
.getInitParameter("")
- 获取ServletContext对象
.getServletContext()
获取Config:getServletConfig()
初始化Config:在初始方法中保存config
6、ServletContext
接口,表示Servlet上下文对象
一个web工程,只有一个ServletCOntext对象实例
是一个域对象
ServletContext在Web启动创建,停止销毁
作用:
- 获取web.xml中配置的上下文参数context-param
.getInitParameter("");
<context-param>
<param-name>xxx</param-name>
<param-value>xxx</param-value>
</context-param>
- 获取当前的工程路径,格式:/工程路径
.getContextPath()
- 获取工程部署后在服务器硬盘上的绝对路径
.getRealPath("/")
- 像Map一样存取数据
.setAttribute("","");
.getAttribute("");