广告
返回顶部
首页 > 资讯 > 精选 >Java拦截器和过滤器的区别有哪些
  • 448
分享到

Java拦截器和过滤器的区别有哪些

2023-06-15 05:06:58 448人浏览 独家记忆
摘要

小编给大家分享一下Java拦截器和过滤器的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、过滤器(filter)过滤器处于客户端与WEB资源(Servlet、jsP、html)之间,客户端与Web资源之间的请求

小编给大家分享一下Java拦截器和过滤器的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、过滤器(filter)

过滤器处于客户端与WEB资源(Servlet、jsP、html)之间,客户端与Web资源之间的请求和响应都要通过过滤器进行过滤。举例:在过滤器中定义了禁止访问192.10.10.1这个地址,那么当客户端发出访问192.10.10.1的请求时,经过过滤器后,客户端得到的响应是出现该IP禁止访问的提示。在JAVA WEB中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符

二、拦截器(interceptor)

拦截器是一种面向方面/切面编程aop Aspect-Oriented Programming),而面向切面就是将多个模块的通用服务进行分离,如权限管理、日志服务,他们在多个模块中都会用到,就可以将其各自封装为一个可重用模块。而这些通用服务的具体实现是通过拦截器来完成,比如用户客户端访问一些保密模块都应先通过权限审查的拦截器来进行权限审查,确定用户是否具有该项操作的权限后方能向下执行。在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法,比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

三、拦截器与过滤器的区别

拦截器是基于java的反射机制的,而过滤器是基于函数回调(职责链)

过滤器依赖与servlet容器,而拦截器不依赖与servlet容器

拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

拦截器可以访问action上下文、值栈里的对象,而过滤器不能

在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

四、详细说明

拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

下面通过实例来看一下过滤器和拦截器的区别:
使用拦截器进行/admin 目录下jsp页面的过滤

<package name="newsDemo" extends="struts-default" namespace="/admin">        <interceptors>            <interceptor name="auth" class="com.test.news.util.AccessInterceptor" />            <interceptor-stack name="authStack">                <interceptor-ref name="auth" />            </interceptor-stack>        </interceptors>        <!-- action -->        <action name="newsAdminView!*" class="newsAction" method="{1}">            <interceptor-ref name="defaultStack"/>            <interceptor-ref name="authStack">            </interceptor-ref>

下面是我实现的Interceptor class:

package com.test.news.util;import java.util.Map;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import com.test.news.action.AdminLoginAction;public class AccessInterceptor extends AbstractInterceptor {    private static final long serialVersionUID = -4291195782860785705L;        @Override    public String intercept(ActionInvocation actionInvocation) throws Exception {                  ActionContext actionContext = actionInvocation.getInvocationContext();         Map session = actionContext.getSession();              //except login action         Object action = actionInvocation.getAction();        if (action instanceof AdminLoginAction) {            return actionInvocation.invoke();         }        //check session        if(session.get("user")==null ){            return "loGout";         }        return actionInvocation.invoke();//go on     }}

过滤器:是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.

使用过滤器进行/admin 目录下jsp页面的过滤,首先在web.xml进行过滤器配置:

<filter>        <filter-name>access filter</filter-name>        <filter-class>             com.test.news.util.AccessFilter        </filter-class>    </filter>    <filter-mapping>        <filter-name>access filter</filter-name>        <url-pattern>/admin      public void destroy() {         }    public void doFilter(ServletRequest arg0, ServletResponse arg1,             FilterChain filterChain) throws IOException, ServletException {                      httpservletRequest request = (HttpServletRequest)arg0;                  HttpServletResponse response = (HttpServletResponse)arg1;                  HttpSession session = request.getSession();                 if(session.getAttribute("user")== null && request.getRequestURI().indexOf("login.jsp") ==-1 ){             response.sendRedirect("login.jsp");            return ;         }                  filterChain.doFilter(arg0, arg1);     }    public void init(FilterConfig arg0) throws ServletException {         }}

Java有哪些集合

Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;3、Set集合:不可重复;4、Map映射:无序,键唯一,值不唯一。

看完了这篇文章,相信你对“Java拦截器和过滤器的区别有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Java拦截器和过滤器的区别有哪些

本文链接: https://www.lsjlt.com/news/277776.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java拦截器和过滤器有哪些区别
    Java拦截器和过滤器有以下区别:1. 执行顺序:过滤器在Servlet容器内部执行,而拦截器在Java代码中执行。过滤器是在请求被...
    99+
    2023-10-08
    java
  • Java拦截器和过滤器的区别有哪些
    小编给大家分享一下Java拦截器和过滤器的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、过滤器(filter)过滤器处于客户端与Web资源(Servlet、JSP、HTML)之间,客户端与Web资源之间的请求...
    99+
    2023-06-15
  • 过滤器和拦截器的区别有哪些
    这篇文章主要讲解了“过滤器和拦截器的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“过滤器和拦截器的区别有哪些”吧!Filter的使用首先,要使用F...
    99+
    2022-10-19
  • java拦截器和过滤器有什么区别
    Java拦截器和过滤器都是用于处理请求和响应的中间件,但它们在功能和使用方面有一些区别。 功能:拦截器主要用于处理方法级别的拦截...
    99+
    2023-10-24
    java
  • 过滤器和拦截器的区别
    文章目录 一、拦截器和过滤器的区别1、过滤器1、实现方式2、应用场景 2、拦截器1、实现方式2、应用场景 总结 一、拦截器和过滤器的区别 过滤器和拦截器触发时机不一样,过...
    99+
    2023-09-12
    servlet java spring
  • Java中拦截器和过滤器有什么区别
    这篇文章将为大家详细讲解有关Java中拦截器和过滤器有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、过滤器(filter)过滤器处于客户端与Web资源(Servlet、JSP、HTML)之间,...
    99+
    2023-06-15
  • java中过滤器和拦截器有什么区别
    在Java中,过滤器(Filter)和拦截器(Interceptor)都是用于处理Web请求的组件,但它们有以下区别:1. 功能不同...
    99+
    2023-08-26
    java
  • Java拦截器和过滤器的区别分析
    目录一、过滤器(filter)二、拦截器(interceptor)三、拦截器与过滤器的区别 四、详细说明 一、过滤器(filter) 过滤器处于客户端与Web资源(Servlet、J...
    99+
    2022-11-12
  • Spring拦截器和过滤器的区别在哪?
    目录一、概述二、拦截器和过滤器介绍2.1 过滤器 (Filter)2.2 拦截器 (Interceptor)2.3 主要区别三、拦截器和过滤器的区别3.1 实现原理不同3.2 使用范...
    99+
    2022-11-12
  • Spring拦截器和过滤器有什么区别
    今天就跟大家聊聊有关Spring拦截器和过滤器有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、概述拦截器和过滤器filter和拦截器的功能都是拦截,filter拦截的目标...
    99+
    2023-06-15
  • java过滤器和拦截器有哪些异同点
    这篇“java过滤器和拦截器有哪些异同点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java过滤器和拦截器有哪些异同点”文...
    99+
    2023-06-27
  • 过滤器和拦截器的区别是什么
    本篇内容介绍了“过滤器和拦截器的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们在项目中同时配置 拦截器 和 过滤器。过滤器的配...
    99+
    2023-06-02
  • Java拦截器,过滤器,监听器的简单原理和区别
    一、简单原理 拦截器(Interceptor):在Spring MVC等框架中,拦截器主要用于在处理Controller方法前后添加特定的处理逻辑。 过滤器(Filter):过滤器是基于Java Servlet的一种组件,它主要...
    99+
    2023-10-29
    监听器 过滤器 区别
  • Java拦截器Interceptor和过滤器Filte的执行顺序和区别
    目录1、实现原理不同2、使用范围不同3、触发时机不同 4、拦截的请求范围不同5、注入Bean情况不同 6、控制执行顺序不同1、实现原理不同 过滤器和拦截器 底层实现方式大不相同,过滤...
    99+
    2022-11-12
  • JAVA中的拦截器、过滤器
    JAVA变成拦截器、过滤器 一、拦截器1、简介说明2、源码及方法说明3、拦截器自定义应用 二、过滤器1、简介说明2、源码及方法说明3、过滤器的自定义应用 三、Springboot中的WebMvcConfigurer1、简介2...
    99+
    2023-08-19
    java servlet 开发语言
  • java拦截器和过滤器有什么不同
    Java拦截器和过滤器在功能和使用场景上有所不同。1. 功能:拦截器主要用于拦截并处理方法调用,可以在方法执行前后进行一些额外的处理...
    99+
    2023-10-10
    java
  • Java过滤器和拦截器怎么实现
    这篇文章主要介绍“Java过滤器和拦截器怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java过滤器和拦截器怎么实现”文章能帮助大家解决问题。一、过滤器与拦截器相同点拦截器与过滤器都是体现了...
    99+
    2023-07-06
  • SpringBoot面试突击之过滤器和拦截器区别详解
    目录实现过滤器和拦截器a) 实现过滤器b) 实现拦截器过滤器 VS 拦截器1.出身不同2.触发时机不同3.实现不同4.支持的项目类型不同5.使用的场景不同总结实现过滤器和拦截器 首先...
    99+
    2022-11-13
    SpringBoot过滤器 拦截器区别 SpringBoot过滤器 拦截器 SpringBoot过滤器 SpringBoot 拦截器
  • Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系解析
    目录Filter 和 Interceptor 的区别FilterInterceptorSpring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Acti...
    99+
    2022-11-13
    Spring过滤器和拦截器 Spring拦截器Interceptor
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用
    目录1.过滤器 (Filter)2.拦截器 (Interceptor)3.区别3.11、实现原理不同3.2 使用范围不同3.3 触发时机不同3.4 拦截的请求范围不同3.5 注入Be...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作