`

过滤器(filter)和(interceptor)

 
阅读更多

        首先众所周知,过滤器是与ervlet容器支持的,拦截器是与Spring容器支持的。

先谈谈Servlet(小服务程序)=Service+Applet(小应用程序):

         Servlet是一个供其他Java程序调用的Java类,不能独立运行。Servlet的生命周期是由Servlet容器控制的,分为三个阶段:初始化,运行,销毁。Servlet的生命周期在百科中都有,概括而言就是由web容器调用,客户端发送请求的时候,实例化Servlet对象并初始化,再调用Service()方法离得doPost()或者doGetI()或者其他最后销毁。{需要注意的是Servlet一般只被初始化一次,即再次请求的时候不用init()直接调用service()方法}。

         在eclipse中使用如下:

         见附件,现在用的是4.4版本的好像web.xml就没有以前的servlet-mapping和servlet-name还有url了,说的不对请指出谢谢。

         那Servlet说完了该说正点了Filter(过滤器):

 <filter>
    <filter-name>mainPageFilter</filter-name>
    <filter-class>com.meihf.hjoyblog.filter.MainPageFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>mainPageFilter</filter-name>
    <url-pattern>/main/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

           class对应你项目下的类目录,url-pattern是拦截请求。2.4版本后新增的<dispatcher>标签有REQUEST,FORWARD,INCLUDE,ERROR分别解释为:通过客户端传来的请求,通过forward传来的请求,通过include传来的请求和<error-page>传来的请求,默认是REQUEST。

           

package com.hanyx.hjoyblog.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpUtils;

import org.springframework.web.filter.OncePerRequestFilter;

public class MainPageFilter extends OncePerRequestFilter {

	@Override
	protected void doFilterInternal(HttpServletRequest request,
			HttpServletResponse response, FilterChain fc)
			throws ServletException, IOException {
		@SuppressWarnings("deprecation")
		CharSequence requestPath = HttpUtils.getRequestURL(request);
		    int start = requestPath.toString().lastIndexOf("main")+4;
			String subPath = (String) requestPath.subSequence(start,requestPath.length());
			request.setAttribute("subPath", "/HJoyBlog/main"+subPath);
			request.getRequestDispatcher("/main").forward(request, response);
		}
	}

 

      你所写的拦截器的类继承OncePerRequestFilter,这是为什么呢?

因为要确保一次 请求只通过一次拦截器不需重复。

 

       再来说说interceptor(拦截器)是利用发射来管理这个类。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求都起作用。另外在action的生命周期中,拦截器可以多次被调用,而过滤器只在初始化的时候被调用一次。

       拦截器是做一些业务逻辑的操作。具体怎样使用如下代码:

       

      这里先空出来,暂时还没有写这里的代码,配置的话同理写一个拦截器,然后在struts.xml中进行配置,等我写了我会再贴出来。

      后续再补充还有SpringMVC的interceptor也会补充,谢谢。说的不对请大家指出。

 

 


          

  • 大小: 34.9 KB
  • 大小: 24 KB
  • 大小: 32.6 KB
分享到:
评论

相关推荐

    Filter过滤器与Interceptor拦截器

    Filter过滤器与Interceptor拦截器有很多相似

    SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    在Java Web开发中,Spring MVC框架提供了两种机制来处理请求:拦截器(Interceptor)和过滤器(Filter)。它们都是在请求被控制器处理之前和之后执行的一系列预处理和后处理操作,但它们在功能、使用场景和工作原理...

    SpringBoot中使用过滤器(Filter)和拦截器(Interceptor)案例

    1、在SpringBoot中如何实现自定义过滤器(Filter)和拦截器(Interceptor) 2、通过执行案例了解多个过滤器和拦截器的执行顺序 【本案例包含源码以及可执行的jar文件,源码文件建议使用IDEA进行导入查看学习,建议使用...

    Struts2_interceptor_和_filter区别

    标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...

    Filter以及Interceptor的区别

    **Filter** 是Servlet容器提供的一种过滤器技术,它可以在请求到达目标资源(如Servlet或JSP)之前或之后执行一些预处理或后处理工作。Filter可以被应用到Web应用的任何部分,并且对于每一个进入或离开该范围的HTTP...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    Struts2编写的通用(拦截器,过滤器)Filter

    这个名为"Struts2编写的通用(拦截器,过滤器)Filter"的项目,主要目标是防止用户非法访问未授权的页面,确保只有登录用户才能访问特定的资源。 **拦截器(Interceptor)** 拦截器是Struts2框架的核心特性之一,它...

    SpringBoot中使用Filter和Interceptor的示例代码

    Filter接口定义在javax.servlet包中,任何实现了Filter接口的类都可以作为过滤器来使用。Filter接口有三个方法:init、doFilter和destroy。init方法用于初始化过滤器,doFilter方法用于处理HTTP请求和响应,destroy...

    浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件

    在本文中,我们将深入探讨SpringMVC的拦截器(Interceptor)和Servlet的过滤器(Filter)之间的差异和联系,以及如何配置SpringMVC的拦截器。理解这两者的区别对于开发高效且安全的Web应用程序至关重要。 首先,让我们...

    拦截器和过滤器的区别

    在现代软件开发过程中,特别是Web应用程序中,为了实现灵活高效的业务逻辑处理及控制流管理,常常会使用到两种设计模式:拦截器(Interceptor)与过滤器(Filter)。这两种技术虽然在功能上有一定的相似之处,但其...

    设计模式-拦截过滤器

    拦截过滤器模式(Interceptor Filter Pattern)基于责任链模式,通过创建一个过滤器链,每个过滤器都实现一个共同的接口,这个接口定义了对请求进行处理的方法。当请求到达时,它会依次通过这个过滤器链,每个过滤器...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    Interceptor与Filter的区别

    在Java Web开发中,拦截器(Interceptor)与过滤器(Filter)是两种常见的处理请求和响应的技术。它们虽然都用于在请求处理前后执行某些操作,但其实现机制、应用场景以及作用范围等方面存在较大差异。下面将详细...

    springboot框架demo学习,内含filter、Interceptor、Aspect以及注解形式的aspect

    springboot框架demo,其中包含了filter、Interceptor、Aspect以及注解形式的aspect,以及对应的get和post接口,配置好了可以直接跑,省的再自己去搜索进行配置了,用来学习过滤器,拦截器和切面的配置以及执行顺序非常...

    Struts 2 过滤器和拦截器的区别

    在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地利用这两种工具来优化应用程序的性能和安全性。 #### 二、...

    过滤器和拦截器区别区别

    过滤器和拦截器的区别 过滤器和拦截器是两个常见的概念在 Java Web 开发中,它们都可以用来对请求进行处理和过滤,但是它们之间有着本质的区别。 首先,从机制上来说,拦截器是基于 Java 的反射机制的,而过滤器是...

    struts过滤器(拦截器)程序.zip

    在Struts2中,过滤器(Filter)和拦截器(Interceptor)是实现业务逻辑控制和增强功能的重要机制。下面将详细阐述这两个概念以及它们在实际项目中的应用。 首先,过滤器在Servlet容器中扮演着预处理请求和后处理...

    过滤器与过滤器

    在Java Web开发中,过滤器(Filter)和拦截器(Interceptor)是两种常见的处理请求和响应的机制。它们主要用于在请求被实际处理之前或之后执行某些预定义的任务,如认证、授权、数据转换、日志记录等。在这个基于...

    拦截器过滤器.rar

    综上所述,"拦截器过滤器.rar"这个压缩包文件是一个关于如何在Web应用中实施拦截器和过滤器的学习资源,涵盖了拦截器与过滤器的基本概念、用法以及可能的问题处理。通过学习和实践这些示例,你可以提升自己在处理...

Global site tag (gtag.js) - Google Analytics