springMVC拦截器和过滤器总结详解编程语言

拦截器: 用来对访问的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 ,灵活

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16080.html

(0)
上一篇 2021年7月19日 18:59
下一篇 2021年7月19日 18:59

相关推荐

发表回复

登录后才能评论