过滤器概述
对web应用来说,过滤就是驻留在服务器端,在源数据的目的数相同的数据间、对web请求和web响应的头属性和内容体进行操作的一种特殊web组件。
当web容器收到一个对资源的请求时,容器将判断是否有过滤器和这个资源相关。如果有,容器把这个请求发给过滤器进行处理,过滤器处理请求后再把请求发送给目标资源。当目标资源对请求做出响应时,响应也会被容器想先转发给过滤器,在过滤器中对响应内容进行处理,然后响应被发送到客户端。
在一个web应用程序中,可以配置多个过滤器,这些过滤器组成一个过路器链。过滤器链中的每个过滤器都有特定的操作,请求和响应在浏览器和目标资源之间按照部署描述符中声明的过滤器顺序,在过滤器之间进行传递。
在请求资源是按照过滤器链中过滤器的顺序依次对请求进行处理,并将请求沿过滤器传递给下个过滤器,直到传递到目标资源;发送响应则是按照过滤器链相反的方向对响应进行处理和传递,直到把响应传到客户端为止。过滤器并不是必须把请求出送到下一个过滤器,它也可以根据处理结果直接给客户端发送响应,也可以将请求转发给另外一个目标资源。
Java代码:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> you get me!!!!! <br> </body> </html>
JSP代码:<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> you get me!!!!! <br> </body> </html>
xml代码:<?xml version="1.0" encoding="UTF-8"?> <web-app> <filter> <filter-name>FILTERyangshunfan</filter-name> <filter-name>com.yangshunfan</filter-name> </filter> <filter-mapping> <filter-name>FILTERyangshunfan</filter-name> <url-pattern></url-pattern> </filter-mapping> </web-app>