如何在java中使用Filter进行访问控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在java中使用Filter进行访问控制相关的知识,希望对你有一定的参考价值。

参考技术A 可以对上面的两个操作 添加例外 具体可以在的中进行配置,然后在filter实现中获取配置的例外参数,并进行判断是否进行过滤操作 可以做形如下面的配置: exclusions /login.jsp,login.action本回答被提问者采纳 参考技术B 可以对上面的两个操作 添加例外
具体可以在<filter>的<init-param>中进行配置,然后在filter实现中获取配置的例外参数,并进行判断是否进行过滤操作
可以做形如下面的配置:
<init-param>
<param-name>exclusions</param-name>
<!-- 例外添加 不需要过滤操作的接口 -->
<param-value>/login.jsp,login.action</param-value>

Java web学习filter

一.概念:
Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源: 例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
二、Filter简介
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过 Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行 相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
三.代码示例
 <1>基础演示
package cn.edu.hpu.lesson;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

//1、新建一个类,实现Filter接口

public class Filterlesson1 implements Filter {
    public void destroy() {
  
    }
    //2、实现doFilter()方法,打印一句话,来证明能够进行拦截
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("before call first filter.");
       chain.doFilter(request,response);
       System.out.println("after call first filter.");
    }
    public void init(FilterConfig arg0) throws ServletException {
    }
}
下面在web.xml中操作加入
3、在web.xml中进行配置(参照Servlet配置)


   技术分享


   
4.最后打开网页测试得到下面结果

技术分享



总结:

对于 filter 的 应用相信大家已经明白了,它主要的作用就是用户在访问某个目标资源之前,对访问的请求和响应进行拦截,做一些处理,然后再调用目标程序,这样做的好处是可 以对一些公共的操作进行抽象,就拿设置字符集来说,如果不使用这种方式,我们每个页面都要写设置字符集的语句。不但麻烦而且维护困难,但是如果使用filter 的话,只需要添加一个类,在 xml 中配置一下,如果不想使用了,将配置文件中的内容去除即可。

其实这就是一种 AOP (Aspect OrientedProgramming),面向切面编程。它的主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码 中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

对于设置字符集来说,它并非是业务逻辑的内容,对于这些内容的处理我们就可以提取出来,使用 filter 进行整体设置,这种方式相当于对类中的内容做进一步的抽象,使我们的系统更加灵活,更加能应对变化!












































以上是关于如何在java中使用Filter进行访问控制的主要内容,如果未能解决你的问题,请参考以下文章

ACL访问控列表之标准版

在JAVA中filter有啥作用?

在JAVA中filter有啥作用?

Java项目怎么控制权限啊?

Filter学习

java filter 如何中获取请求地址?