一:过滤器
1. 用于限制用户访问某些资源时。
2. 它以一种组件的形式绑定到WEB应用程序中,过滤器采用了“链”的方式进行处理的。(客户端==>过滤器==>…过滤器…==>过滤器==>WEB资源)
实现过滤器:在Servlet中,要定义一个过滤器,直接让一个类实现javax.servlet.Filter接口即可。此接口定义了三个方法。
1.public void init(FilterConfig filterConfig) throws ServletException2.public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException,ServletException
3.public void destroy()
注意:过滤器在容器启动时是自动加载的
FilterChain接口的的主要作用是将用户的请求向下传递。
public void doFilter(ServletRequest request,
ServletResponse response) throws IOException,ServletException
Filter的配置方式方式一:
注解配置
@WebFilter(filterName="",urlPatterns={"/images/*"},
initParams={
@WebInitParam(name="fruit",value="grape")
})
过滤器的过滤路径配置类型
路径类型一:以目录的方式配置过滤路径:eg: /images/*
路径类型二:以资源类型的方式配置过滤路径: eg: *.jpg
但是,不能将两种路径类型的配置结合起来,否则Web容器启动时发生错误。
方式二:
web.xml中配置
过滤器的应用:
1. 编码过滤:在过滤器中设置编码
2. 登录验证:在过滤器中判断session属性是否为空,从而进行登陆验证
二:监听器(listener)
Zai WEB中可以对 application,session,request,三种操作进行监听
1. ServletContext监听器(容器监听器)
2. HttpSession监听器(会话监听器)
3. ServletResquest监听器(请求监听器)
Servlet监听器的配置方式
方式一:
注解配置: @WebListener
方式二:
web.xml中配置:
<listener>
<listener-class>监听器路径</listener-class>
</listener>
ServletContext监听器
1.对Web容器状态(生命周期)的监听
实现ServletContextListener接口,覆写相关方法
补充:ServletContextEvent代表容器状态的事件类,里面有个getServletContext()方法
2.对ServletContext属性范围的监听
实现ServletContextAttributeListener接口,覆写相关方法
HttpSession监听器(对会话进行监听)
3.对会话(HttpSession)属性范围进行监听———使用HttpSessionBindingListener接口
实现HttpSessionBindingListener接口,覆写相关方法
特别注意:使用HttpSessionBindingListener接口实现会话属性监听时,不用注册!
实现了HttpSessionBindingListener接口的类,将该类的对象在会话属性范围绑定和解绑属性时,会自动调用valueBound(xxx)方法和valueUnbound(xxx)方法。
ServletRequest监听器(请求监听器)
1.对请求状态(生命周期)进行监听
实现ServletRequestListener接口,覆写相关方法
2.对请求范围的属性进行监听
实现ServletRequestAttributeListener接口,覆写相关方法