当前位置: 移动技术网 > IT编程>开发语言>Java > 浅谈springMVC拦截器和过滤器总结

浅谈springMVC拦截器和过滤器总结

2019年07月22日  | 移动技术网IT编程  | 我要评论

拦截器: 用来对访问的url进行拦截处理

用处: 权限验证,乱码设置等

spring-mvc.xml文件中的配置:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemalocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.1.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
            http://www.springframework.org/schema/tx
            ">

  <!--编写拦截器-->
  <mvc:interceptors>
    <!--对特定的url拦截-->
    <mvc:interceptor>
      <mvc:mapping path="/test.do"/>
      <bean class="com.hbut.interceptor.testinterceptor"/>
    </mvc:interceptor>
    <mvc:interceptor>
      <!--对特定的模块拦截第一级别拦截-->
      <mvc:mapping path="/test/×/"/>
      <bean class="com.hbut.interceptor.testinterceptor1"/>
    </mvc:interceptor>

    <mvc:interceptor>
      <!--对特定的模块拦截-->
      <mvc:mapping path="/test/×"/>
      <bean class="com.hbut.interceptor.testinterceptor2"/>
    </mvc:interceptor>

  </mvc:interceptors>

对所有的url进行拦截

 <mvc:interceptors>
   <bean class="org.springframework.web.servlet.i18n.localechangeinterceptor"/>
 </mvc:interceptors>

java代码

package com.hbut.interceptor;

import org.springframework.web.servlet.handlerinterceptor;
import org.springframework.web.servlet.modelandview;

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

/**
 * @author xijun.gong
 * @date 2016/6/1.
 * aim:  com.hbut.interceptor
 */
public class testinterceptor implements handlerinterceptor {

  @override
  public boolean prehandle(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o) throws exception {
    
   //todo 在此处添加要操作code 
   system.out.println("prehandle"); 
    return true; //todo 此处为false时,请求不会到达control层
  }

  @override
  public void posthandle(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o, modelandview modelandview) throws exception {
    system.out.println("posthandle"); //todo 可以用来修改信息,跳转等
  }

  @override
  public void aftercompletion(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o, exception e) throws exception {
    system.out.println("aftercompletion"); //todo 最后执行
  }
}

另一种拦截器:大同小异

package com.hbut.interceptor;

import org.springframework.ui.modelmap;
import org.springframework.web.context.request.webrequest;
import org.springframework.web.context.request.webrequestinterceptor;

/**
 * @author xijun.gong
 * @date 2016/6/1.
 * aim:  com.hbut.interceptor
 */
public class test2interceptor implements webrequestinterceptor {
  @override
  public void prehandle(webrequest webrequest) throws exception {
  }

  @override
  public void posthandle(webrequest webrequest, modelmap modelmap) throws exception {

  }

  @override
  public void aftercompletion(webrequest webrequest, exception e) throws exception {

  }
}

过滤器: 依赖于servlet容器,使用回调函数,过滤范围大

拦截器: 依赖于框架容器 比如spring、mybatis ,灵活

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网