SpringBoot2.6 インターセプター(HandlerInterceptor)を使用する
環境
Windows10 64bit
Spring Boot 2.6.3
Spring Tool Suite 4
JavaSE 11
Thymeleaf 3
操作方法
1.インターセプターの定義(RunInterceptor.java)
package com.example.demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class RunInterceptor implements HandlerInterceptor {
// メソッドの実行前に実行される
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {
System.out.println("preHandle method");
return true;
}
// メソッドの実行後に実行される
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle method");
}
// リクエスト処理の完了後に実行される
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion method");
}
}
2.コントローラ側クラスの定義(InterController.java)
package com.example.demo;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//jsonを返す
@RestController
public class InterController {
@GetMapping("/cft3")
public Map<Integer, String> funA() {
Map<Integer, String> mp = new HashMap<>();
mp.put(101, "東京");
mp.put(202, "大阪");
System.out.println("before message 12345");
return mp;
}
}
3.インターセプターの設定ファイル(ConfigWebMvc.java)
package com.example.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class ConfigWebMvc implements WebMvcConfigurer {
@Bean
public RunInterceptor runInterceptor() {
return new RunInterceptor();
}
//インターセプターを追加
public void addInterceptors(InterceptorRegistry registry) {
// 「/cft3」が対象になる
registry.addInterceptor(runInterceptor()).addPathPatterns("/cft3");
}
}
4.実行結果
コンソールに以下の順番で表示されます。
preHandle method
before message 12345
postHandle method
afterCompletion method
画面に以下のメッセージで表示されます。
{“101″:"東京","202″:"大阪"}