20201109黄春跃

20201109黄春跃

知识点

过滤器

为什么要使用过滤器

在我们实际项目中,我们对访问某些资源的请求需要进条件的筛选、过滤。当这个请求满足特定的情
况,才能让这个请求访问目标资源,如果不满足条件,就不让访问目标资源。比如说:对于访问管理员
功能的请求,我们应该对这样的请求进行管理员权限的判断。如果当前用户拥有管理员权限,可以访
问。反之不可以。我们java开发中需要很多这样过滤功能的操作,所以需要学习过滤器。

什么是过滤器

Filter :是Java中预先定义好了的接口,可以过滤不同的内容,具体怎么过滤,需要使用者定义一个
实现类,然后实现接口中的过滤方法,在方法中书写过滤的条件。filter是对客户端访问资源的过滤,符
合条件放行,不符合条件不放行

过滤器的应用场景

过滤论坛中用户发表内容中的非法字符

当我们上论坛或者贴吧这类的网站浏览信息时,我们发现,很多评论有时候是携带脏词的。而这些脏词
不能显示出来,使用**代替了。类似这类的脏词过滤,我们可以通过java中的过滤器,对请求参数中的
脏词进行过滤。

登录权限检查

当客户端浏览器发出一个请求,这个请求在访问到真正的目标资源之前,我们需要进行登录权限的检
查。如果已经登录,我们就让这个请求通过,访问资源;如果没有登录,我们不能让请求访问目标资
源。这样的操作需要在访问具体资源进行条件的过滤,我们可以使用过滤器来完成。

创建过滤器

1.我们创建一个过滤器的话需要实现 Filter 这个接口

2.doFilter 方法执行过滤器的功能

使用步骤

  1. 编写一个 Servlet ,路径为 /captcha
  2. 创建一个类实现过滤器接口 javax.servlet.Filter
  3. xml方式或者注解方式配置 过滤器拦截的请求路径(urlPatterns = "/captcha")
  4. 在 doFilter 方法中书写过滤任务
  5. filterChain.doFilter 方法放行

注意事项

过滤器 doFilter 方法默认拦截请求,如果需要经过过滤器之后,可以继续访问资源,要使用
filterChain 对象的 doFilter 方法放行。

监听器

什么是监听器

在实际生活着,我们很多商场有摄像头,监视着客户的一举一动。如果客户有违法行为,商场可以采取
相应的措施。同样,在我们的java程序中,有时也需要监视某些事情,一旦被监视的对象发生相应的变
化,我们应该采取相应的操作。这就需要用到java中的监听器。
web监听器是一种 Servlet 中的特殊的类,它们能帮助开发者监听web中的特定事件,比如
ServletContext , HttpSession , ServletRequest 的创建和销毁等。可以在某些动作前后增加处理,
实现监控。

监听器的使用场景

系统启动时初始化信息

ServletContextListener 用来监听 ServletContext 对象的创建和销毁的。当项目启动的时候,
servletContex t对象被创建,会调用 ServletContextListener 的 contextInitialized 方法。所
以我们可以在此方法中初始化项目需要的信息。
扩展 : 后面学习spring框架的时候,我们会使用到它.

统计在线人数

我们知道,每当一个用户访问项目的时候,都会创建一个 session 会话。所以当前 session 会话被创
建,当前在线用户 +1 ,每当 session 会话被销毁,当前在线用户 -1 。 HttpSessionListener 可以用
来监听 session 对象的创建和销毁的。所以可以在 HttpSessionListener 中的监听 session 对象创建
和销毁的方法中控制在线人数的加减。

常见的监听器

// 容器的创建和销毁
javax.servlet.ServletContextListener 作用是监听 ServletContext 的创建和销毁
javax.servlet.http.HttpSessionListener 作用是监听 HttpSession 的创建和销毁
javax.servlet.ServletRequestListener 作用是监听 ServletRequest 的创建和销毁
// 容器属性的监听, 包括 添加/替换/删除
javax.servlet.ServletContextAttributeListener 作用是监听 ServletContext 属性的变

javax.servlet.http.HttpSessionAttributeListener 作用是监听 HttpSession 属性的变

javax.servlet.ServletRequestAttributeListener 作用是监听 ServletRequest 属性的变

总结

晚自习从头看了看过滤器,监听器还没看完。

标签

评论

this is is footer