可以为一个WEB应用组件 部署多个过滤器,这过滤器组成一个过滤链,每个过滤器只执行某个特定的操作或者检查。这样请求在达到被访问的目标之前,需要经过这个过滤链。如果由于安全的问题不能访问目标资源,那么过滤器就可以 把客户端的请求拦截。
Filter的开发
在应用开发中,我们经常使用的过滤功能就是对客户端的请求进行统一编码,对客户端进行认证,。下面我们做个例子,假设客户端要访问一个secutiry/index.jsp页面。这个页面 接收一些参数 ,这些参数 需要保存到数据库中,为了在数据库中使用相同的编码 ,可以开发一个过滤器对请求进行 统一编码 。secutiry目录下的所有页面 都是受限制的页面 ,只有通过授权 的用户才让访问,如果按照平常的方式,在每个页面 都对用户进行 授权 , 这样不权编程困难,而且代码 的修改也很困难 ,这里来开发一个进行 安全的检查过滤器。
在Servlet常用接口中知道doFilter是过滤器中最重要的方法,通过这个方法 进行 实际的业务处理,在foFilter方法中,首先获得HTTP的请求和响应对象,然后对HTTP的请求和响应对象,然后 对HTTP请求中的参数 进行 统一编码,这里采用的编码 方式是GB2312。进行 编码 后,就把控制权转让给下一个过滤器。如果在这个过滤链中没有下一个过滤器,那么 就会把请求直接发送到目标 。
配置
Filter描述
下面我们来看一另一个Filter的开发,这个就是前面说到的用于对用户的访问认证。如果认证通过,那么 允许访问 指定资源,否则不行。
在上面的代码中,首先通过isLogin = (String)session.getAttribute("isLogin")获得用户是否登录 的属性。如果 为 真,则可以访问到目标 资源,否则 转向 login_singnon.jsp
配置