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″:"大阪"}