【spring】get・postによる画面遷移と値の受け渡し
spring bootでget、postをするサンプルコード。
サンプルコード
main.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>get post Sampleページ</title>
</head>
<body>
<h1>get post サンプルページ</h1>
<p>サンプルボタン</p>
<form th:action="@{/getpost/getpage}" method="get">
<input type="text" name="testGet" th:value="${getInitValue}">
<input type="submit" value="get">
</form>
<form th:action="@{/getpost/postpage}" method="post">
<input type="text" name="testPost" th:value="${postInitValue}">
<input type="submit" value="post">
</form>
</body>
</html>
- get、postの遷移元となる画面
- get、postのボタンを押すとそれぞれ画面遷移
- name="testGet"、name="testPost"の値がjavaに渡される
- th:value="${getInitValue}"、th:value="${postInitValue}"はmain.controllerで初期値を設定している。
main.controller
package com.example.demo.trySpring.getpost;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/getpost/main")
public String home(Model model) {
model.addAttribute("getInitValue", "getで送信したいテキスト");
model.addAttribute("postInitValue", "postで送信したいテキスト");
return "getpost/main";
}
}
GetController.java
package com.example.demo.trySpring.getpost;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GetController {
@GetMapping("/getpost/getpage")
public String home(@RequestParam("testGet")String str, Model model) {
model.addAttribute("getText",str);
System.out.println(str);
return "getpost/getpage";
}
}
- getでボタンを押した後に呼び出されるController
- @RequestParam(“testGet")String strに遷移元の値が入ってくる
- model.addAttribute(“getText",str);でhtmlに表示する値をセット
getpage.html
<<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>getページ</title>
</head>
<body>
<h1>getページ</h1>
<p>getページ</p>
<p th:text="${getText}"></p>
<form th:action="@{/getpost/main}" method="get">
<input type="submit" value="main">
</form>
</body>
</html>
- getの遷移先ページ
- <p th:text="${getText}"></p>で遷移元からの値を受け取る
PostController.java
package com.example.demo.trySpring.getpost;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class PostController {
@PostMapping("/getpost/postpage")
public String home(@RequestParam("testPost")String str, Model model) {
model.addAttribute("postText",str);
System.out.println(str);
return "getpost/postpage";
}
}
postpage.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>postページ</title>
</head>
<body>
<h1>postページ</h1>
<p>postページ</p>
<p th:text="${postText}"></p>
<form th:action="@{/getpost/main}" method="get">
<input type="submit" value="main">
</form>
</body>
</html>
- postでの値受け渡しはgetと同じ