欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springMVC拦截器Interceptor总结

程序员文章站 2022-07-09 18:10:43
...

一、使用场景

1.解决乱码问题
2.解决权限问题

二、工作流程

springMVC拦截器Interceptor总结

二、使用实例

  1. web.xml(配置过滤器)

    <!--配置中文乱码过滤器-->
      <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>utf-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/</url-pattern>
      </filter-mapping>
    
  2. testInterceptor.java(实现HandlerInterceptor接口)

    //返回值:表示是否需要将当前的请求拦截下来
    //true 请求继续
    //false 请求终止
    //o 表示被拦截请求的目标对象
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, 		  HttpServletResponse httpServletResponse, Object o) throws Exception {
        //对用户是否登录进行判断
        if(httpServletRequest.getSession().getAttribute("user")==null){
            //如果用户没有登录,就终止请求,并跳转到登录界面
            httpServletRequest.getRequestDispatcher("/login").forward(httpServletRequest,httpServletResponse);
            return false;
        }
        return true;
    }
    
    //modelAndView参数改变返回视图参数或方法
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        modelAndView.addObject("msg","从拦截器修改的参数值");
    }
    
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    }
    
    

3.mvc-dispatcher-servlet.xml(注册拦截器)

	<!--注册拦截器-->
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/hello/**"/>
			<bean class="com.mrzhang.mvcdemo.interceptor.testInterceptor" />
		</mvc:interceptor>
	</mvc:interceptors>

三、与过滤器的区别

1.过滤器Filter依赖Serlet容器,基于回调函数,过滤范围大;(共性问题如乱码,以减少重复代码,便于维护)
2.拦截器interceptor依赖于框架容器,基于反射机制,只过滤请求。(处理web应用中请求的一些通用性问题)