广告
返回顶部
首页 > 资讯 > 精选 >java过滤器和拦截器有哪些异同点
  • 805
分享到

java过滤器和拦截器有哪些异同点

2023-06-27 14:06:07 805人浏览 独家记忆
摘要

这篇“java过滤器和拦截器有哪些异同点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java过滤器和拦截器有哪些异同点”文

这篇“java过滤器和拦截器有哪些异同点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java过滤器和拦截器有哪些异同点”文章吧。

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页面的过滤

下面是我实现的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进行过滤器配置: 下面是过滤的实现类:

package com.test.news.util;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;import javax.servlet.Http.httpservletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class AccessFilter implements Filter {    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过滤器和拦截器有哪些异同点”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: java过滤器和拦截器有哪些异同点

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

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

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

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

下载Word文档
猜你喜欢
  • java过滤器和拦截器有哪些异同点
    这篇“java过滤器和拦截器有哪些异同点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java过滤器和拦截器有哪些异同点”文...
    99+
    2023-06-27
  • java拦截器和过滤器有哪些区别
    Java拦截器和过滤器有以下区别:1. 执行顺序:过滤器在Servlet容器内部执行,而拦截器在Java代码中执行。过滤器是在请求被...
    99+
    2023-10-08
    java
  • java拦截器和过滤器有什么不同
    Java拦截器和过滤器在功能和使用场景上有所不同。1. 功能:拦截器主要用于拦截并处理方法调用,可以在方法执行前后进行一些额外的处理...
    99+
    2023-10-10
    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
  • Java中拦截器和过滤器有什么区别
    这篇文章将为大家详细讲解有关Java中拦截器和过滤器有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、过滤器(filter)过滤器处于客户端与Web资源(Servlet、JSP、HTML)之间,...
    99+
    2023-06-15
  • java中过滤器和拦截器有什么区别
    在Java中,过滤器(Filter)和拦截器(Interceptor)都是用于处理Web请求的组件,但它们有以下区别:1. 功能不同...
    99+
    2023-08-26
    java
  • Java过滤器和拦截器怎么实现
    这篇文章主要介绍“Java过滤器和拦截器怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java过滤器和拦截器怎么实现”文章能帮助大家解决问题。一、过滤器与拦截器相同点拦截器与过滤器都是体现了...
    99+
    2023-07-06
  • 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中过滤器 (Filter) 和 拦截器 (Interceptor)的使用
    目录1.过滤器 (Filter)2.拦截器 (Interceptor)3.区别3.11、实现原理不同3.2 使用范围不同3.3 触发时机不同3.4 拦截的请求范围不同3.5 注入Be...
    99+
    2022-11-12
  • java过滤器的特点有哪些
    Java过滤器的特点包括:1. 可以在请求到达Servlet之前对请求进行预处理,也可以在响应返回给客户端之前对响应进行后处理。2. 可以对请求进行修改,如添加请求参数、修改请求头等。3. 可以对响应进行修改,如添加响应头、修改响应内容...
    99+
    2023-08-11
    java
  • java拦截器的作用有哪些
    Java拦截器的作用有以下几个:1. 认证和授权:拦截器可以用于对请求进行认证和授权处理,例如检查用户是否登录或具有访问权限等。2....
    99+
    2023-08-26
    java
  • 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项目中使用过滤器、拦截器和监听器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个...
    99+
    2023-05-31
    java 拦截器 过滤器
  • Java自定义过滤器和拦截器实现ThreadLocal线程封闭
    目录线程封闭ThreadLocal线程封闭实现步骤封装ThredLocal的方法自定义过滤器自定义拦截器Application类启动类中配置自定义过滤器和拦截器定义调用接口请求访问验...
    99+
    2022-11-13
    Java ThreadLocal线程封闭 Java 线程封闭
  • SpringBoot使用过滤器、拦截器和监听器的案例代码(Springboot搭建java项目)
    目录SpringBoot使用过滤器、拦截器和监听器一、SpringBoot使用过滤器Spring boot过滤器的使用(两种方式)方式一:方式二:二、SpringBoot使用拦截器三...
    99+
    2023-02-02
    SpringBoot使用过滤器 拦截器和监听器 SpringBoot拦截器和监听器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作