230314 Spring @PathVariable

kangjuju·2023년 3월 14일
0

Spring

목록 보기
7/13

요청파라미터의 여러가지 출력방법.

  • 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 요청을 받아왔다.


@PathVariable

이번엔 요청명의 "/"를 기준으로 나뉘는 기능을 이용하여 컨트롤러를 작성해보자.

먼저 "/"를 기준으로 같은 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

0개의 댓글