SERVLET过滤器
全球因特网用户使用不同类型的Web浏览器访问应用服务器上存储的Web应用程序。每个浏览器根据对应的Web浏览器窗口中的设置显示应用程序中的信息。Web应用程序可能会有一些客户机的Web浏览器不支持的HTML标记或功能。这种情况下,应用程序在客户机的Web浏览器中可能运行,可能不运行,还可能生成不需要的输出。为了避免这种问题,在调用servlet之前需要识别浏览器的类型和向Web应用程序发送请求的客户机和其他特定的信息。可以使用servlet过滤器在调用特定servlet处理请求之前检索浏览器的类型和其他客户机信息。识别出浏览器类型和客户机信息后,可以自定义应用程序的输出,以便在不同浏览器中查看该输出。
servlet过滤器是一种截取客户机和服务器之间的请求和向的对象。过滤器能修改Web客户机段所发送请求的标头和内容,并将其转发给目标servlet。过滤器还能截取并操作servlet所返回响应的标头和内容。servlet过滤器对象与servlet不同,因为其只向其他Web应用程序传输请求和响应,本身不处理请求也不生成响应。servlet过滤器作为独立的程序开发,可以附加到各种Web应用程序上。
1. 使用过滤器的优点
servlet过滤器监控发送给servlet应用程序处理的请求和servlet返回给客户机的响应。使用servlet过滤器的各种优点有:
- 可以识别Web客户端所发送请求的类型,如HTTP和FTP,然后调用需要处理该请求的servlet。
- 使用servlet过滤器可以在客户机访问servlet之前就使客户机无效。
- 可以从请求参数中检索用户信息来验证用户。
- 可以使用servlet过滤器识别关于MIME类型和请求的其他标头内容的信息。然后可以使用过滤器将MIME类型转换成与servlet兼容的类型。
- 可以使用servlet过滤器帮助servlet与外部资源通信。例如,可以使用过滤器注册数据库驱动程序,以便servlet使用该驱动程序进行数据库连接。
- 可以使用servlet过滤器在将响应发送给客户机之前截取并压缩响应。还可以在将响应返回给客户机之前在过滤器中进行加密。
2. 编写过滤器
您可以开发servlet数据库来执行各种功能,如计算servlet的请求处理时间、识别发送响应的浏览器的类型以及识别用户所发送内容的MIME类型。可以用过个过滤器过滤客户机请求的信息。这些过滤器即组成了过滤器链。如果应用程序使用一组过滤器来过滤请求和响应,则需要在部署时就显式隐射调用这些过滤器及其目标servlet的顺序。
3. 创建过滤器
Servlet API提供了javax.servlet包的Filter接口、FilterConfig接口和FilterChain接口,可用于开发过滤器。要开发过滤器,需要在过滤器类中实现Filter接口。Filter接口定义了Web容器为管理过滤器的生命周期而调用的方法。下表描述了过滤器需要重写的javax.servlet.Filter接口的各种方法。
方法 | 描述 |
---|---|
Public void int ( FilterConfig filt_cnfg ) throws ServletException | 初始化过滤器。Web容器通过将包含过滤器初始化信息FilterConfig接口的对象来调用此方法。 |
Public void doFilter ( ServletRequest serv_req, ServletResponse serv_resp, FilterChain filter_chain) throws IOException,Servlet |