서버에 전송되는 값을 요청 파라미터 라고 합니다.
컨트롤러를 만든다.
entry.html을 만든다.
post방식으로 name,age,birth12을 넘겨준다.
컨트롤러에서 @RequestParam을 통해 넘어온 값들을 저장한다.
model.addAttribute를 통해 name,age,birth12를 name,age,birth1로 변수로 설정한다. view인 confirm.html에서 해당 변수들을 사용할 수 있다.
컨트롤러를 수정한다.
confirm2.html을 만든다.
여기서 Form이 아니고, form이 사용가능한 이유는, Model에 저장할 때 명시적으로 '이름'을 주지 않으면 클래스명에 소문자 카멜 표기법을 적용해서 Model에 저장하기 때문이다.
Form.class를 만든다.
전송버튼을 누르면 confirm 아래의 화면을 확인할 수 있다.
링크를 클릭했을때 URL의 일부로 사용되는 값을 취득하는 방법과 하나의 뷰에 여러개의 버튼이 있을때 처리 내용을 구별하는 방법을 알아보자.
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class PathVariableController {
@GetMapping("show")
public String showView() {
return "show";
}
@GetMapping("/function/{no}")
public String selectFunction(@PathVariable Integer no) {
// 뷰 이름을 초기화
String view = null;
switch (no) {
case 1:
view = "pathvariable/function1";
break;
case 2:
view = "pathvariable/function2";
break;
case 3:
view = "pathvariable/function3";
break;
}
return view;
}
@PostMapping(value = "send", params="a")
public String showAView() {
return "submit/a";
}
@PostMapping(value = "send", params="b")
public String showBView() {
return "submit/b";
}
@PostMapping(value = "send", params="c")
public String showCView() {
return "submit/c";
}
}
GetMapping("/functon/{no}")를 보면 알 수 있듯이 no를 @PathVariable을 사용하여 변수로 받아서 사용할 수 있다.
form 태그는 /send를 post방식으로 요청하고, param으로 a,b,c 중 1개를 넘겨준다.
컨트롤러에서 그 에 따라 3가지 return값이 달라진다. 그에 해당하는 html을 보여준다.
기능1은 get방식의 요청이므로 파라미터 1이 노출된다.
버튼 A는 post방식의 요청이므로 파라미터가 노출되지 않는다.