首页 理论教育 JavaEE开发教程:过滤器的使用

JavaEE开发教程:过滤器的使用

时间:2023-11-03 理论教育 版权反馈
【摘要】:如web.xml文件配置如下:在init方法使用 FilterConfig 对象获取参数:过滤器进行用户权限控制:在项目中有一张图片,只有请求参数name的值等于张三才可以查看图片。AuthFilter.java内容:web.xml文件内容:部署工程并启动Tomcat,在浏览器的地址栏中输入http://localhost:8080/chapter3_filter/image/cat.jpg,执行结果如图3.23所示。图3.23 没有name参数的执行结果图3.24 带name参数并且值为张三执行结果对于配置多个过滤器的情况下过滤器的执行顺序由web.xml文件中filter-mapping 元素的顺序决定。

JavaEE开发教程:过滤器的使用

过滤器是一个实现了javax.servlet.Filter接口的Java类。javax.servlet.Filter 接口定义了三个方法,如表3.3所示。

表3.3 Filter接口的方法

Filter的init方法中提供了一个FilterConfig 对象。如web.xml文件配置如下:

在init方法使用 FilterConfig 对象获取参数:

【例3.6】过滤器进行用户权限控制:在项目中有一张图片,只有请求参数name的值等于张三才可以查看图片。

(1)新建名称为chapter3_filter的Web工程,在chapter3_filte目录下新建名称为image的文件夹,image文件夹下放入一张猫的图片,命名为cat.jpg。

(2)新建一个名称为AuthFilter的类,实现javax.servlet.Filter接口,覆盖destroy()、init()、doFilter()方法,并在web.xml文件中配置过滤器。代码如下所示。

AuthFilter.java内容:

(www.xing528.com)

web.xml文件内容:

(3)部署工程并启动Tomcat,在浏览器的地址栏中输入http://localhost:8080/chapter3_filter/image/cat.jpg,执行结果如图3.23所示。在浏览器地址栏中再输入http://localhost:8080/chapter3_filter/image/cat.jpg?name=张三,执行结果如图3.24所示。

程序说明:

在web.xml文件中配置的AuthFilter的路径是/*,则意味着请求所有的Web资源都需要经过过滤器,并且配置了过滤器的初始化参数,参数名称是name,值是张三,在Web服务器(Tomcat)启动时首先执行init()方法(只执行一次),读取初始化参数并赋值给对象的成员变量name。当请求cat.jpg会执行doFilter方法,在doFilter方法体内,通过request获取请求参数name的值,然后和对象的成员变量进行比较(比较请求参数是否有name并且值等于张三),如果相等就可以访问请求的图片,否则向浏览器输出“name不正确,请求被拦截,不能访问web资源”。所以第一次请求访问cat.jpg时没有带name参数,返回的结果如图3.23所示。第二次请求访问cat.jpg时带了name参数并且值等于张三,则可以正常访问cat.jpg图片,如图3.24所示。

图3.23 没有name参数的执行结果

图3.24 带name参数并且值为张三执行结果

对于配置多个过滤器的情况下过滤器的执行顺序由web.xml文件中filter-mapping 元素的顺序决定。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈