ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC拦截器

2022-05-09 21:34:45  阅读:195  来源: 互联网

标签:拦截器 SpringMVC request response import servlet public


分析


实现

1.后端controller

package com.czy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testInterceptor")
    public String testInterceptor(){
        System.out.println("testInterceptor执行了...");
        return "success";
    }
}

2.编写拦截器类(实现HandlerInterceptor接口)

拦截器1

package com.czy.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义拦截器
 */
public class MyInterceptor1 implements HandlerInterceptor {

    /**
     * 预处理,controller方法执行前
     * return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
     * return false 不放行,无法执行controller
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器执行了...前111");
        /*request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);*/
        return true;
    }

    /**
     * 后处理的方法,controller方法执行后,success.jsp执行前
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器执行了...后111");
        //跳转后success.jsp页面与afterCompletion也会执行,但我们只会看到跳转页面
        /*出错了也可进行页面跳转:request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);*/
    }

    /**
     * success.jsp执行后,该方法会执行,此方法不能跳转页面
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器执行了...最后111");
    }
}

拦截器2

package com.czy.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义拦截器
 */
public class MyInterceptor2 implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器执行了...前222");
        return true;
    }


    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器执行了...后222");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器执行了...最后222");
    }
}

3.配置拦截器

  <!--配置拦截器-->
    <mvc:interceptors>
        <!--配置多个拦截器-->
        <mvc:interceptor>
            <mvc:mapping path="/user/*"/> <!--拦截的具体方法-->
            <!--<mvc:exclude-mapping path=""/>--> <!--不拦截的方法-->
            <bean class="com.czy.interceptor.MyInterceptor1"></bean> <!--配置拦截器对象-->
        </mvc:interceptor>
        
        <!--配置第二个拦截器-->
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.czy.interceptor.MyInterceptor2"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

结果

标签:拦截器,SpringMVC,request,response,import,servlet,public
来源: https://www.cnblogs.com/czy-algorithm/p/16250960.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有