首页 > 编程语言 > 详细

spring mvc拦截器

时间:2019-07-23 00:39:54      阅读:55      评论:0      收藏:0      [点我收藏+]

坚持两天一更,尽快把笔记更新上来~

 

spring mvc拦截器:
前提1:实现HandlerInterceptor接口并根据需要重写接口里面的3个方法
public class SpringMVCInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
     /*在一个应用中或者说是在一个请求中可以同时存在多个Interceptor,每个    
    Interceptor 的调用会依    
    据它的声明顺序依次执行,而且最先执行的都是每个Interceptor 中的preHandle ()方        
    法.当它返回为false时,表示请求结束,后续的Interceptor 和Controller 都不会再执   
    行;当返回值为true 时就会继续调用下一个Interceptor 的preHandle() 方法,如果 
    已经是最后一个Interceptor 的时候就会调用当前请求的Controller 方法。可在此函数 
    设置字符编码  、登陆验证    
    */
    request.setCharacterEncoding("utf-8");
    if(request.getSession.getAttibute("user")==null){
         request.getRequestDispatcher(
        "/WEB-INF/jsp/login.jsp").forward(request,response);
        retrun false;//中断请求
    };
    //其他处理细节.....  
    return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest,     HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    /*在Controller执行后且jsp页面之前执行此方法,可在此用modelAndView改变Controller中 
modelAndView的数据
    */
    }
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest,     
    HttpServletResponse httpServletResponse, Object o, Exception e) throws 
    Exception {
       //此方法不常用,关闭资源、流
      }
    }


注:
执行顺序:请求--preHandle()--Controller中的方法()--postHandle()--jsp页面--afterCompletion()
 
前提2:
配置springmvc.xml:(关键部分内容)
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
                    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!--注册拦截器-->
<mvc:interceptors>
    <!-- 使用bean定义一个Interceptor,
        直接定义在mvc:interceptors根下面的SpringMVCInterceptor将拦截所有的请求
        <mvc:mapping path="/**" /> 如果只写一个*,则不能拦截类似/*/*的请求。
        /**的意思是所有文件夹及里面的子文件夹 
        /*是所有文件夹,不含子文件夹 
        /是web项目的根目录。
        静态资源的请求需要判断不进行拦截 -->
    <bean class="com.handler.SpringMVCInterceptor"/>
    <mvc:interceptor>
        <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
        <mvc:mapping path="/UserOperate"/>
        <!--针对静态资源不进行过滤-->
        <mvc:exclude-mapping path="/css/**"/>
        <mvc:exclude-mapping path="/js/**"/>
        <mvc:exclude-mapping path="/image/**"/>
        <bean class="com.handler.SpringMVCInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>        

 

spring mvc拦截器

原文:https://www.cnblogs.com/afei1759/p/11229138.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!