`
coolworm
  • 浏览: 44483 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

filter拦截器设置

阅读更多

filter 和 struts2拦截器的比较

比较一,filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于java本身的反射机制,这是两者最本质的区别。
 比较二,filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilter方法。而interceptor与servlet容器无关。
 比较三,Filter的过滤范围比Interceptor大,Filter除了过滤请求外通过通配符可以保护页面,图片,文件等等,而Interceptor只能过滤请求。
 比较四,Filter的过滤例外一般是在加载的时候在init方法声明,而Interceptor可以通过在xml声明是guest请求还是user请求来辨别是否过滤

 

 

 Servlet过滤器的基本原理
在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

 

 

具体实例:

建一个JAVA 类

package Interceptor;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LoginCheckFilter implements Filter {
 private  String loginPage="";
 
 public void destroy() {
  // TODO Auto-generated method stub

 }
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  
  HttpServletRequest httpServletRequest=(HttpServletRequest)request;
   
   String url=httpServletRequest.getServletPath();

//如果用户是登陆的ACTION 则要放行~~ 不做拦截
   if(url.indexOf("login.jsp")>=0 ||url.indexOf("loginAction.action")>=0)
   {
    chain.doFilter(request, response);
   }
    else
   {
     HttpSession session = httpServletRequest.getSession();
     //判断用户session是否过期或是否登录
           if (session!= null&&session.getAttribute("user")!=null)
           {
            chain.doFilter(request, response);
           }
           else
           {
            //转向登录页面
            RequestDispatcher rd=request.getRequestDispatcher(loginPage);
            rd.forward(request, response);
           }
   }
   }

  public void init(FilterConfig filterConfig) throws ServletException
  {
   this.loginPage=filterConfig.getInitParameter("loginPage");
  }
 

}
 

WEB.XML 里添加

 

<!-- FILTER 过滤器 -->
<filter>
  <filter-name>LoginCheckFilter</filter-name>
  <filter-class>
   Interceptor.LoginCheckFilter
  </filter-class>
  <init-param>
   <param-name>loginPage</param-name>
   <param-value>/login.jsp</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>LoginCheckFilter</filter-name>
  <url-pattern>*.jsp</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>LoginCheckFilter</filter-name>
  <url-pattern>*.action</url-pattern>
 </filter-mapping>

这里也可以设置其他的文件格式,比如 jpg   xml等等

分享到:
评论

相关推荐

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

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

    拦截器 FILTER 样例

    ### 拦截器FILTER代码样例解析 #### 一、概述 在Web开发中,拦截器(FILTER)是一种常用的技术手段,它可以在请求被处理之前或之后执行一些操作,如用户验证、日志记录等。本文将通过一个具体的Java Filter实现...

    SpringBoot的拦截器

    Spring Boot提供了对Spring MVC的集成,因此我们可以利用Spring MVC的拦截器机制来实现这些功能。 首先,让我们了解一下Spring Boot中创建拦截器的基本步骤: 1. 创建自定义拦截器类:你需要创建一个实现了`...

    springMVC拦截器项目

    SpringMVC 拦截器项目是一个典型的 Web 应用开发示例,它利用 SpringMVC 框架中的拦截器(Interceptor)机制来实现特定的功能,如权限控制、日志记录、性能统计等。SpringMVC 是 Spring 框架的一部分,专为构建基于 ...

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    然而,在使用拦截器时,可能会遇到拦截器误拦截静态资源文件(如js、css、图片等)的问题。这不仅会影响网页的加载速度,还可能导致页面呈现异常。 在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的...

    拦截器解决中文乱码问题

    5. **注意过滤器**:有时候,除了拦截器,还需要考虑过滤器(Filter)的作用。过滤器同样可以处理编码问题,但它们执行的时机可能早于拦截器。如果已经有一个处理编码的过滤器存在,我们需要确保拦截器和过滤器之间...

    Filter过滤器与Interceptor拦截器

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

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

    此外,可能还需要设置路由规则,以便在用户尝试访问受保护的URL时触发过滤器或拦截器。 7. **filterdemo**: 这个压缩包可能包含了一个示例项目,展示了如何在SpringBoot中配置和使用过滤器或拦截器进行登录验证。...

    struts2 拦截器

    Struts2的拦截器是基于Java的Servlet Filter机制实现的,但是更加强大和灵活。 2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action...

    拦截器和过滤器的区别

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

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

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

    SpringBoot拦截器Filter的使用方法详解

    拦截器(Interceptor)和过滤器(Filter)在SpringBoot中用于在请求处理之前或之后执行特定任务,例如日志记录、权限检查或请求数据处理等。本文主要介绍如何在SpringBoot中使用拦截器和过滤器,以及它们之间的区别...

    spring boot 登录拦截器

    Spring Boot利用Spring MVC的Filter或者Interceptor机制来实现拦截器。这里我们主要关注`HandlerInterceptor`接口,它提供了三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, ...

    spirngmvc拦截器,拦截处理body和表单值.rar

    在Spring MVC框架中,拦截器(HandlerInterceptor)是一种强大的机制,用于在请求处理前后执行自定义逻辑。它们在控制器方法执行之前和之后运行,提供了一种灵活的方式来添加全局行为,如认证、授权、日志记录、性能...

    过滤器/拦截器

    在Web开发领域,过滤器(Filter)和拦截器(Interceptor)是两种常见的机制,它们用于在请求被实际处理之前或之后执行特定的操作。这两种技术在Java Web应用中尤为常见,尤其是使用Servlet API或者Spring框架的时候...

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

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

    拦截器和控制器的区别

    拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...

    cas-client扩展拦截器支持excludes

    标签“cas filter 拦截器扩展 exclude”进一步明确了讨论的主题。"exclude"表示排除,意味着开发者可以通过配置来指定一些URL路径不经过CAS的拦截器,这样这些特定的路径就可以不受认证机制的约束,例如,静态资源、...

    springmvc 拦截器

    Spring MVC中的拦截器基于Servlet的Filter和AOP(面向切面编程)的概念。拦截器是Spring MVC框架中的一部分,它遵循HandlerInterceptor接口,包含三个关键方法:preHandle、postHandle和afterCompletion。这些方法...

    Springmvc登录拦截器Demo

    Spring MVC的拦截器是基于Servlet的Filter的一种扩展,它允许开发者在请求被控制器处理之前或之后执行一些操作。拦截器可以用来进行权限检查、日志记录、性能统计等任务。 2. **创建自定义拦截器** 首先,我们...

Global site tag (gtag.js) - Google Analytics