J2EE中 Servlet、Filter、Interceptor

聊聊面试中的过滤器与拦截器 点击上方“蓝字”技术的故事还有很多 只想与你静静分享N和我公众号后台回复“java”,获得作者Java知识体系/面试必看资料背景做过 JavaWeb 开发的对过... 阅读详情
1)servlet和filter的区别 
Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处 理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给 Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。 

2)servlet、filter、interceptor的执行顺序 

通过上图可以看到,顺序应该是我们配的filter在前,之后是struts2的FilterDispatcher,然后是各个拦截器,最后原路 返回。

se a Filter when you want to filter and/or modify requests based on specific conditions. Use aServlet when you want to control, preprocess and/or postprocess requests.

The Sun Java EE tutorial mentions the following about filters:

A filter is an object that can transform the header and content (or both) of a request or response. Filters differ from web components in that filters usually do not themselves create a response. Instead, a filter provides functionality that can be “attached” to any kind of web resource. Consequently, a filter should not have any dependencies on a web resource for which it is acting as a filter; this way it can be composed with more than one type of web resource.

The main tasks that a filter can perform are as follows:

  • Query the request and act accordingly.
  • Block the request-and-response pair from passing any further.
  • Modify the request headers and data. You do this by providing a customized version of the request.
  • Modify the response headers and data. You do this by providing a customized version of the response.
  • Interact with external resources.

For authorization, a Filter is the best suited. Here's a basic kickoff example of how a filter checks requests for the logged-in user:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
        // User is not logged in. Redirect to login page.
        ((HttpServletResponse) response).sendRedirect("login");
    } else {
        // User is logged in. Just continue with request.
        chain.doFilter(request, response);
    }
}


A Filter intercepts on HTTP requests matching its URL pattern and allows you to modify them. See also its javadoc:

A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.

Filters perform filtering in the doFilter method. Every Filter has access to a FilterConfigobject from which it can obtain its initialization parameters, and a reference to the ServletContextwhich it can use, for example, to load resources needed for filtering tasks.

Filters are configured in the deployment descriptor of a web application.

Examples that have been identified for this design are:

  • Authentication Filters
  • Logging and Auditing Filters
  • Image conversion Filters
  • Data compression Filters
  • Encryption Filters
  • Tokenizing Filters
  • Filters that trigger resource access events
  • XSL/T filters
  • Mime-type chain Filter

A ServletContextListener intercepts on webapp's startup and shutdown and allows you to execute some code on startup and/or shutdown. See also its javadoc:

Interface for receiving notification events about ServletContext lifecycle changes.

In order to receive these notification events, the implementation class must be either declared in the deployment descriptor of the web application, annotated with WebListener, or registered via one of the addListener methods defined on ServletContext.

Implementations of this interface are invoked at theircontextInitialized(javax.servlet.ServletContextEvent) method in the order in which they have been declared, and at theircontextDestroyed(javax.servlet.ServletContextEvent) method in reverse order.

When to use the one or the other should now be obvious. Use a Filter if you want to intercept on HTTP requests maching a specific URL pattern because you want to check/modify the HTTP request/response. Use a ServletContextListener if you want to intercept on webapp's startup and/or shutdown.

http://www.cnblogs.com/Fskjb/archive/2010/03/27/1698448.html

下面从几个方面阐述一下题目中四个概念的区别与联系:

         1、概念

         2、生命周期

         3、职责

         4、执行过程

        

         一、概念:

         1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。

         2、filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

        3、listener:监听器,从字面上可以看出listener主要用来监听只用。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。通俗的语言说就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。

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

      5、servlet、filter、listener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到struts.xml中。spring的拦截器配置到spring.xml中。 

        二、生命周期:

        1、servlet:servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
          (1)、装入:启动服务器时加载Servlet的实例; 
        (2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成; 
        (3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法; 
        (4)、销毁:停止服务器时调用destroy()方法,销毁实例。 

        

           2、filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行) 
         (1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例; 
         (2)、每一次请求时都只调用方法doFilter()进行处理; 
         (3)、停止服务器时调用destroy()方法,销毁实例。

         3、listener:类似于servlet和filter

           web.xml 的加载顺序是:context- param -> listener -> filter -> servlet 

       4、interceptor:以struts的拦截器为例,加载了struts.xml以后,初始化相应拦截器。当action请求来时调用intercept方法,服务器停止销毁interceptor。

       三、职责

       1、servlet:

        创建并返回一个包含基于客户请求性质的动态内容的完整的html页面;
        创建可嵌入到现有的html页面中的一部分html页面(html片段);
        读取客户端发来的隐藏数据;
        读取客户端发来的显示数据;
        与其他服务器资源(包括数据库和java的应用程序)进行通信;
        通过状态代码和响应头向客户端发送隐藏数据。

       2、filter:

        filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
        在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
        根据程序需要修改请求和响应;
        在servlet被调用之后截获servlet的执行

         3、listener:职责如概念。

          servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:
         第一类:与servletContext有关的listner接口。包括:ServletContextListener、ServletContextAttributeListener
         第二类:与HttpSession有关的Listner接口。包括:HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、                      HttpSessionActivationListener;
         第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener

        4、interceptor:与过滤器十分相似,通过层层拦截,处理用户的请求和响应。


        备注:web.xml 的加载顺序是:context-param -> listener -> filter -> servlet 。了解了这几个概念的区别以后,不难理论这个加载顺序了。


        四、几个区别:

        1,servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.
        2,filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。
         filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等
        3, servlet,filter都是针对url之类的,而listener是针对对象的操作的,如session的创建,session.setAttribute的发生,在这样的事件发生时做一些事情。
     可用来进行:Spring整合Struts,为Struts的action注入属性,web应用定时任务的实现,在线人数的统计等
 
       4,interceptor 拦截器,类似于filter,不过在struts.xml中配置,不是在web.xml,并且不是针对URL的,而是针对action,当页面提交action时,进行过滤操作,相当于struts1.x提供的plug-in机制,可以看作,前者是struts1.x自带的filter,而interceptor 是struts2 提供的filter.
    与filter不同点:(1)不在web.xml中配置,而是在struts.xml中完成配置,与action在一起
                            ( 2  ) 可由action自己指定用哪个interceptor 来在接收之前做事
    

        5,struts2中的过滤器和拦截器的区别与联系:

      (1)、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
      (2)、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。
      (3)、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
      (4)、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
      (5)、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

        

        五、执行流程图:

         1、servlet:

           

          2、filter:

          

               

             

           3、listener:

             

           4、interceptor:

            

下面我们来验证一下:

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
        xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
 
  <filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>
 
  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
struts.xml(如下):

<!DOCTYPE struts PUBLIC
         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
         "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
     <package name="default" extends="struts-default">
        <interceptors>
           <interceptor name="loginInterceptor" class="interceptor.LoginInterceptor" />
           <interceptor-stack name="loginStack">
              <interceptor-ref name="loginInterceptor" />
              <interceptor-ref name="defaultStack" />
           </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="loginStack"></default-interceptor-ref>
        <global-results>
           <result name="login">/login.jsp</result>
        </global-results>
        <action name="Login" class="action.LoginAction">
           <result>/index.jsp</result>
        </action>
     </package>
 </struts>
login.jsp(如下):

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
 
  <body>
    <h3>Login</h3>
    <hr>
    <form action="Login.action" method="POST">
        Name: <input type="text" name="username" />
        <input type="submit" value="submit" />
    </form>
  </body>
</html>
index.jsp(如下):

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
 
  <body>
    <h3>Login Success!</h3>
  </body>
</html>
filter.MyFilter(如下):

package filter;
 
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;
 
public class MyFilter implements Filter {
 
        public void destroy() {
        }
 
        public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain chain) throws IOException, ServletException {
               
                System.out.println("请求过滤");
               
                chain.doFilter(request, response);
               
                System.out.println("返回过滤");
               
        }
 
        public void init(FilterConfig arg0) throws ServletException {
        }
 
}
interceptor.LoginInterceptor(如下):

package interceptor;
 
import org.apache.struts2.ServletActionContext;
 
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 
public class LoginInterceptor extends AbstractInterceptor {
 
        private static final long serialVersionUID = -2796326480994355318L;
 
        @Override
        public String intercept(ActionInvocation ai) throws Exception {
               
                System.out.println("请求拦截");
               
                if(!"YOYO".equals(ServletActionContext.getRequest().getParameter("username"))){
                        return "login";
                }
               
                String result = ai.invoke();
               
                System.out.println("返回拦截");
               
                return result;
        }
 
}
action.LoginAction(如下):

package action;
 
public class LoginAction {
       
        public String execute(){
                System.out.println("登陆ACTION");
               
                return "success";
        }
 
}

部署好后打开login.jsp,输入任意非"YOYO"字符,控制台打印出

请求过滤
请求拦截
返回过滤

 说明拦截之后还会按照原路返回;

如果输入"YOYO",则打印出

请求过滤
请求拦截
登陆ACTION
返回拦截
返回过滤

由此可以验证它的执行顺序,详细流程可以看最上面的图例。

10.2 在新能源、储能及电网节点的应用实践 构网型变流器技术在电力系统中的应用进展 构网型变流器技术正从理论研究走向规模化工程应用,为新能源并网提供主动支撑能力。该技术在光伏电站采用"部分构网"混合架构,由构网单元实现黑启动和弱网稳定;在风电场利用叶轮动能提供惯量响应。储能系统是理想的构网载体,可提供快速调频和动态电压支撑。在电网节点,构网型STATCOM可增强弱电网电压稳定性,大容量变流器可替代传统调相机。当前面临标准滞后、宽频振荡风险等共性挑战,需在可靠性、经济性间取得平衡。系统级协调控制和精确阻抗建模是应用成功的关键。 阅读详情

相关推荐

向量化和向量数据库的开发步骤,以及本地docker下载Redis-stack-server,以及如何将文本转成向量,以及文本向量化成功后将数据存入到Redis-stack-server这个向量数据库

内存可以作为向量数据库,但是一重启一断电数据就没了这了选择RedisStack作为向量数据,用来向量的存储,未来会改名成Redis8,也就是在原本的Reids的功能上增加了新的特性,本质上还是Redis向量数据库还可以用ElaticSearch、MongoDB等。

qq_61723836的博客 1086

Servlet中过滤器Filter的使用

Servlet中过滤器Filter的使用 1.Filter过滤器简介 在Servlet中,有时我们需要Filter来进行对信息的过滤,比如在一个管理系统中,我们可以设置过滤器来过滤没有登录的用户访问主页以提高系统的安全性。 2.过滤器的优点: 过滤器是可插拔的,我们不需要某个过滤器时,直接删掉不会影响程序的运行。 一个过滤器不依赖于另一个资源 维护少,容易维护 3.过滤器的创建 要创建一个过...

GzxNgu的博客 7972

30秒精准解析论文PDF:PyMuPDF4LLM+Qwen2本地Agent实战指南

PDF文献解析是科研信息处理的基础能力,其本质是将非结构化文档转化为可计算的语义结构。传统OCR方案在原生PDF(如LaTeX导出)上精度低、容错差;而基于PDF对象树的解析技术,能精准定位文本、公式、图表锚点与参考文献区块,为后续结构化提取提供高质量输入。结合轻量级领域微调模型(如Qwen2-1.5B-Instruct)与强约束提示词工程,可实现研究目标、方法框架、核心结果等五大要素的高保真蒸馏。该技术路径兼顾隐私安全、零成本复现与离线鲁棒性,特别适用于高校实验室、研究生课题组及AI初学者构建个人文献处理

weixin_33509203的博客 288

servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet、filter、listener?还有个interceptor?对于这

莫失莫忘-云姐 4万+

3GPP协议解读_物理层系列(一)_物理层协议怎么看?

5G NR相关协议一般都在38系列,点进去以后可以看到,38.2xx系列为物理层相关协议,为了掌握物理层相关知识,应该怎么看协议呢?我建议从38.201读起,对38.2xx系列协议有一个整体的把握。

JCMLSY的博客 1330

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 335

Servlet过滤器Filter详解

Filter概述 1、Filter意为过滤镜或者过滤器,用于在Servlet之处对request或者response进行修改。Filter提出了过滤链(FilterChain)的概念。这个概念体现了设计模式中的 2、Filter的处理过程: Filter基本使用方法 Filter适用的案例

只有想不到没有做不到,程序的力量。。。 2058

【LaTeX】IEEE会议模板中使用BibTex插入文献(解决报错:Something‘s wrong--perhaps a missing \item. \end{thebibliography}

使用IEEE会议论文LaTeX模板时遇到的一个错误,问题描述为:使用Texstudio编译LaTeX模板报错,报错信息提示为。出现的原因为IEEE会议论文模板自带的参考文献引用方式为手动插入,即不使用格式的参考文献,手动将参考文献调整为合适格式,然后粘贴到文本中,我准备将其换成方法引用参考文献。我的替换步骤为删除原始参考文献对应内容,即模板中的: 将以下函数添加到原始参考文献对应位置,对应上文新建的文件。 再次编译出现报错 删除文件夹中的文件 修改模板中的引用名称 引用方法为: 将 替换为 再次编译——

TangPlusHPC的博客 9921

使用 Sa-Token 的全局过滤器解决跨域问题(三种方式全版)

在 web 开发中,跨域绝对是比较折磨新同学的一个问题,本文将讲解三种常见的跨域情形,并讲解如何使用 Sa-Token 框架解决跨域问题。

他很懒,但也在努力的生活着 2616

1️⃣ Coze智能体基础入门教学(2025年全新版本)

不妨设想一下,倘若我们能够打造出一个数字助手,它不但能精准洞悉我们的需求,更可以独立思索、学习以及付诸行动,这便是 AI Agent 的基础理念。它恰似计算机世界里的 “智慧精灵”,能够感知周遭环境、做出判断并采取行动。AI Agent 的发展之路精彩纷呈。它走过了三个重要阶段:起初,它犹如一个被规则束缚的机器人,只能按预设好的指令开展工作。接着,它学会运用统计学方法,通过分析数据来做决策,变得越发灵活。到如今,凭借深度学习技术,它已经能够像人类一样去学习复杂的任务了。

李同学Lino的博客 4088

OWASP-ZAP扫描器的使用

目录 OWASP-ZAP 更新 代理 目录扫描 主动扫描(Active Scan) 扫描结果 生成报告 OWASP-ZAP OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助你在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。 也可以说ZAP是一个中间人代理。它能够获取你对Web应用程序发出的所有请求以...

谢公子的博客 2万+

servlet、listener、filter、interceptor的关系

servlet servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为: 客户端发送请求至服务器端; 服务器将请求信息发送至 Servle

apwf 177

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1225

java基础filter servlet interceptor controller之间的关系

filter、servlet、interceptor、controller间的关系

qq_37398465的博客 1402

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【JAVA】关于拦截器(Interceptor)和过滤器(Filter)的思考对比

Spring 才会把它加入拦截链。Spring 不认识它!,自动注册,自动生效!

AlunYegeer的博客 70

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Servlet、过滤器、监听器、拦截器

详细介绍Servlet、过滤器、监听器、拦截器,以及他们的关系以及区别。

初心不忘、始终方得 7104

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringMVC项目迁移SpringBoot的问题我都梳理到这儿了

迁移 众所周知,SpringMVC的项目有很多特有的配置文件,包括web.xml和servlet .xml,所以迁移到SpringBoot后因为有一些配置已经默认集成到其中,而不需要迁移,还有很多需要我们自己通过SpringBoot的方式重新将其配置到项目中,一般都是通过 代码的方式,而不是配置。 properties 之前需要在servlet.xml中声明具体的路径和名称: <context:property-placeholderlocation="classpath*:base_co.

FurtherSkyQ的博客 870

过滤器与拦截器_学习笔记

过滤器与拦截器过滤器(Filter)1.过滤器的优点2.如何写一个过滤器拦截器(Interceptor)1基本概念2基本使用step1:写拦截器类step2:在spring的配置文件中配置拦截器过滤器与拦截器的区别 过滤器(Filter) 过滤器是Java EE中的组件。 过滤器是执行在Servlet之前的组件。 过滤器可以对请求进行过滤,如果不满足自行指定的条件,可以拦截下来,不予放行,请求就不会被Servlet处理。 过滤器也需要在web.xml中配置注册,通常,映射的路径范围较大,因为它通常用于处理多

滨海之君的博客 306

Filter 与 Interceptor 核心区别

归属区别:Filter 是 Servlet 标准(JavaEE),无 Spring 也能用;Interceptor 是 SpringMVC 专属,仅 SpringMVC 项目生效;拦截范围区别:Filter 拦截「所有 Web 请求」(静态资源 + 控制器);Interceptor 仅拦截「SpringMVC 的控制器请求」(只拦 @Controller 的接口);核心记忆点:Filter 是「全局拦截」,Interceptor 是「SpringMVC 专属拦截」。

2301_80821045的博客 679

过滤器和拦截器的区别

整理自:https://www.cnblogs.com/panxuejun/p/7715917.html 先看下权威的说法: 过滤器和拦截器的区别: 总体区别: 拦截器是基于java的反射机制的,而过滤器是基于函数回调。 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 拦截器可以访问action上下...

都让你们叫老了的博客 4185

spring boot 中使用servlet filter 和interctor和servlet的两个map

servlet3.0两种方式都可以,2.5只能使用一种方式 1.注解方式((3.0) @WebServlet(name="/xx") Application启动 类上添加@ServletComponentScan("servlet包路径") @WebServlet(name = "/some") public class SomeServlet extends HttpServlet {...

weixin_42546729的博客 206

javaweb过滤器_聊聊面试中的过滤器与拦截器

背景做过 JavaWeb 开发的对过滤器和拦截器肯定不会陌生,而且也会熟练的使用,但是关于过滤器和拦截器具体的区别和差异可能不是特别的了解,这篇文章就跟大家介绍下过滤器和拦截器的区别。过滤器 Filter首先介绍下什么是过滤器,过滤器英文叫 Filter,是 JavaEE 的标准,依赖于 Servlet 容器,使用的时候是配置在 web.xml 文件中的,可以配置多个,执行的顺序是根据配置顺序从上...

weixin_39529128的博客 195

spring 过滤器和拦截器

过滤器 依赖于servlet容器,是JavaEE标准,是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作。过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西,比如:在过滤器中修改字符编码;在过滤器...

每天进步一点点儿 643

过滤器(Filter)和SpringMVC中的拦截器(Interceptor)

【复习】过滤器(Filter) 过滤器是Java EE中的组件。 过滤器是执行在Servlet之前的组件。 过滤器可以对请求进行过滤,如果不满足自行指定的条件,可以拦截下来,不予放行,请求就不会被Servlet处理。 过滤器也需要在web.xml中配置注册,通常,映射的路径范围较大,因为它通常用于处理多个甚至所有Servlet需要执行的任务。 同一个应用中可以存在多个过滤器,形成“过滤器链”,...

qq_43165760的博客 741

Servlet之Filter及FilterChain的使用详解

在 JavaEE 中没有 Interceptor(拦截器)的概念,不要和Struts2和Spring中的混淆。 但是有 Filter(过滤器),它实质就起拦截器的作用。 过滤器有两个要素: 1、实现一个接口:javax.servlet.Filter。 2、绑定访问路径,对其进行过滤。 [size=medium][b]一、什么是 Filter(过滤器)?[/b][/size] ...

iteye_3352的博客 449

JavaWeb 三大器--Listener、Filter 和Interceptor 总结

说明:web.xml的加载顺序是:【Context-Param】->【Listener】->【Filter】->【Servlet】,而同个类型之间的实际程序调用的时候的顺序是根据对应的Mapping的顺序进行调用。 详细介绍:web.xml加载顺序与web.xml常用节点解析 一、背景 这段时间因为工作不忙,所以有时间来总结整理一下之前遇到的一些问题。在之前项目开发过程中碰...

lgxzzz的博客 387
上一篇: opentaps 研究资料汇总
下一篇: J2EE应用服务器 Geronimo
努力突破
博客等级 码龄17年 36粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值