質問編集履歴

2

ソースコードの修正

2023/03/07 04:16

投稿

ph3
ph3

スコア9

test CHANGED
File without changes
test CHANGED
@@ -41,6 +41,7 @@
41
41
  @CommonProc
42
42
  @RequestMapping("/hello")
43
43
  public String hello(){
44
+ (何かしらの処理)
44
45
  }
45
46
  ```
46
47
 
@@ -49,11 +50,13 @@
49
50
  ```CommonProcess.java
50
51
  @ModelAttribute
51
52
  public void beforeProc(){
53
+ (何かしらの処理)
52
54
  }
53
55
  ```
54
56
 
55
57
  ```TestController.java
56
58
  public class TestController extends CommonProcess{
59
+ (何かしらの処理)
57
60
  }
58
61
  ```
59
62
  ### 補足情報

1

ソースコードを追加

2023/03/07 04:14

投稿

ph3
ph3

スコア9

test CHANGED
File without changes
test CHANGED
@@ -17,13 +17,45 @@
17
17
  各コントローラーに独自アノテーションを付け、それをもとに実行する事前処理を判定する。
18
18
  →共通処理の分だけ条件分岐を作る必要がある。新たに共通処理を作成したら、インターセプタークラスに条件分岐を追加しないといけない。
19
19
 
20
-
21
20
  2. @ModelAttributeを使う
22
21
  @ModelAttributeを付けたメソッドは、RequestMappingしたメソッドの直前に呼ばれます。
23
22
  このアノテーションを付けたメソッドを単独のクラスとして作成し、これを各コントローラーが継承することで、同じ処理を複数のコントローラーで実行できる。
24
23
  →本来の使い方では無さそう
25
24
 
26
25
 
26
+ ### ソースコード
27
+ 1. インターセプターを使用
28
+ ```SampleInterceptor.java
29
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
30
+
31
+ HandlerMethod hm = (HandlerMethod) handler;
32
+ Method method = hm.getMethod();
33
+ CommonProc annotation = AnnotationUtils.findAnnotation(method, CommonProc.class);
34
+ if (annotation != null) {
35
+ log.info(String.format("exclude login check %s", requestURI));
36
+ return true;
37
+ }
38
+ ```
39
+
40
+ ```SampleController.java
41
+ @CommonProc
42
+ @RequestMapping("/hello")
43
+ public String hello(){
44
+ }
45
+ ```
46
+
47
+
48
+ 2.ModelAttributeを使う
49
+ ```CommonProcess.java
50
+ @ModelAttribute
51
+ public void beforeProc(){
52
+ }
53
+ ```
54
+
55
+ ```TestController.java
56
+ public class TestController extends CommonProcess{
57
+ }
58
+ ```
27
59
  ### 補足情報
28
60
 
29
61
  spring framework 4.3.21