欢迎访问我的blogThe Blog of Dxhua
Listener监听器
在Javaweb中监听器指的是对这个web环境的监听,当被监听的对象发生变换时,可以执行相应的方法进行处理
监听器在开发中常见的场景:手机编程 前端编程;
监听器的相关概念:
事件源:被监听的对象
监听器:用于监听事件源的监听器
注册监听器:将事件源与监听器绑定
响应行为:监听器监听到某事件源的状态变换时,所涉及的功能代码
Javaweb中监听器的分类
- 第一类:按照被监听的对象分类:ServletContext域、ServletResquest域、HttpSession域
- 第二类:监听的内容划分:监听域对象的创建和销毁,监听域对象的属性变化
ServletContextListener
- 创建Lisetener类继承ServletContextListener接口,重写里面的两个方法 之后还要在web.xml中配置
- 直接也可以通过IDEA直接创建
- 其他两个一样的方法
对象感知监听器一般只需要在设置的对象上实现这两个监听器的接口就行了
过滤器Filter
Filter也称为过滤器,是Javaweb中一种十分实用的技术,通过Filter可以对web资源进行管理和控制,一样可以对JSP,Servlet等进行拦截
Filter过滤器运行流程:
优于servlet以及jsp之前运行
应用场景:
可以实现URL级别的权限访问控制、过滤敏感词汇等一些功能
- Filter的生命周期
Filter创建:服务器启动时就创建了该Filter对象
Filter销毁:服务器关闭是Filter销毁
在Filter创建的时候会重新三个方法,init方法,doFilter方法以及destroy方法,init方法里对Filter初始化,可以拿到一些Filter的初始化值
doFilter 方法中有一个参数filterChain,这个参数用来放行,由于一个项目有多个Filter,有可能一个Servlet或者JSP会有多个Filter,所以形成一个Filter链
这个filter处理完后会传给另一个相关的filter来处理 - Filter的配置信息,在web.xml中配置
<filter>
<filter-name>first</filter-name>
<filter-class>com.dxh.filter.FirstFilter</filter-class>
<init-param>
<param-name>namespace</param-name>
<param-value>value</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
- url-pattern配置:
(1)以“/”开头,并以“/”结尾的字符串用于路径映射,如"/com/dxh/"
(2)以""开头的字符串被用于扩展名映射,例如.jsp,表示所有的jsp文件都会被拦截
(3)以空字符串(" “)是用于指定精确的映射应用程序Context root的URL模式,例如来自"http://www.baidu.com"的请求
(4)字符串只有”/",表示应用程序默认的servlet,在这种情况下servlet路径是请求URI去掉context路径,且路径信息为null - dispatcher配置
dispatcher:访问的方式
REQUSET:默认值,代表直接访问某个资源就执行Filter
FORWORD:转发是才访问Filter
INCLUDE:包含资源时才访问
ERROR:发生错误时,进行跳转时执行Filter
ASYNC:异步Servlet的时候需要使用
在配置的时候也可以使用注解的方式 跟Servlet相似
@WebFilter(filterName = "MyFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}