요청파라미터의 여러가지 출력방법.
- html과 Controller를 짝지어 확인하자.
<a href="kbs/login?type=admin">관리자</a><br/>
@GetMapping(value="kbs/login",params="type=admin")
public String kbs(Model model) {
model.addAttribute("message","관리자");
return "list";
}
<a href="kbs/login">파라미터 없음</a><br/>
@GetMapping(value="kbs/login",params="!type")
public String sbs(Model model) {
model.addAttribute("message","type 없음");
return "list";
}
<form action="kbs/login" method="post">
data: <input type="text" name="type" value="user" />
<input type="submit">
</form>
@PostMapping(value="kbs/login")//name속성명
public String asd(@RequestParam("type")String type,Model model) {
model.addAttribute("message","post-type : " + type);
return "list";
}
기존에는 위 방법으로 post / get 요청을 받아왔다.
이번엔 요청명의 "/"를 기준으로 나뉘는 기능을 이용하여 컨트롤러를 작성해보자.
먼저 "/"를 기준으로 같은 mbc범주의 다른 url요청명을 가진 두가지의 폼이 있다.
<form action="mbc/korea" method="get">
data: <input type="text" name="name" value="tom" />
<input type="submit" value="전송2">
</form>
<br>
<form action="mbc/usa" method="get">
data: <input type="text" name="name" value="jeny" />
<input type="submit" value="전송3">
</form>
이를 컨트롤러에서 각각의 url에 요청을 구현하는것이 아닌, 하나의 컨트롤러에서 요청url에 따른 다른 결과를 구현할 수 있다.
@GetMapping(value="mbc/{url}")
public String tvn(@RequestParam("name")String name,
@PathVariable String url,Model model) {
model.addAttribute("message","name: " +name+ ", url :" + url);
return "list";
}
@Mapping에 value속성에서 요청명/{...}
의 형태로 범주를 분류할 수있다.
{} 속 url을 변수화 할땐 @PathVariable
을 사용한다.
이를 더 깊게 사용할 수도 있다.
html
- action의 형태를 잘 확인하자
<form action="ent/hive/singer/bts">
신곡 : <input type="text" name="title" value="다이너마이트">
<input type="submit" value="전송"/>
</form>
<form action="ent/yg/singer/blackpink">
신곡 : <input type="text" name="title" value="아이스크림">
<input type="submit" value="전송"/>
</form>
Controller
@GetMapping(value="ent/{co}/singer/{group}")
public String jtbc(@RequestParam("title")String title,
@PathVariable String co,
@PathVariable String group,Model model) {
String ss = "소속사 : " + co + " 그룹명 : " + group + " 신곡 " +title;
model.addAttribute("message",ss);
return "list";
}
폼태그의 name속성은 @RequestParam
으로 전달받았고,
action속성의 요청명은 @PathVariable
으로 분류하여 받았다.
form - action요청명과 ControllerMapping - value 을 비교대조해보면 각 어디에 해당하는지 알아볼수있다.
action="ent/hive/singer/bts"
value="ent/{co}/singer/{group}"
co = hive / group = bts