インターセプタインターセプタ印刷要求情報を実装SpringBoot

1、コンフィギュレーション・クラス

登録されたインターセプタインターセプタインターフェースaddInterceptorsでWebMvcConfigurerを達成。

package com.example.demo.Interceptor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册Interceptor拦截器
        InterceptorRegistration registration = registry.addInterceptor(new Interceptor());
        //拦截div接口。(/**表示拦截所有请求)
        registration.addPathPatterns(
                "/div"
        );
        //添加不拦截路径
        registration.excludePathPatterns(
                "/**/login",            //登录
                "/**/*.html",            //html静态资源
                "/**/*.js",              //js静态资源
                "/**/*.css",             //css静态资源
                "/**/*.woff",
                "/**/*.ttf"
        );
    }
}

2、ビジネスクラス

インターセプタ印刷要求情報。

package com.example.demo.Interceptor;

import cn.hutool.json.JSONObject;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;


public class Interceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        StringBuilder sb = new StringBuilder(1000);

        //获取请求参数
        Enumeration em = request.getParameterNames();
        JSONObject data = new JSONObject();
        while (em.hasMoreElements()) {
            String name = (String) em.nextElement();
            String value = request.getParameter(name);
            data.put(name,value);
        }
        sb .append("-------------------------------------------------------------\n");
        HandlerMethod h = (HandlerMethod) handler;
        sb.append("Controller: ").append(h.getBean().getClass().getName()).append("\n");
        sb.append("Method    : ").append(h.getMethod().getName()).append("\n");
        sb.append("Params    : ").append(data).append("\n");
        sb.append("URI       : ").append(request.getRequestURI()).append("\n");
        sb.append("URL       : ").append(request.getRequestURL()).append("\n");
        sb .append("-------------------------------------------------------------\n");
        System.out.println(sb.toString());

        return  true;
    }
}

図3に示すように、テストインタフェース

インターセプトは、divのインターフェイスを下回っています。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class InterceptorController {

    @GetMapping("/div")
    @ResponseBody
    public int div(int x,int y ){
        return x/y;
    }
}

4、コンソールテスト結果

-------------------------------------------------------------
Controller: com.example.demo.controller.InterceptorController
Method    : div
Params    : {"x":"2","y":"1"}
URI       : /div
URL       : http://localhost:81/div
-------------------------------------------------------------
公開された17元の記事 ウォンの賞賛1 ビュー310

おすすめ

転載: blog.csdn.net/weixin_43424932/article/details/104038271