url경로에 변수를 사용하는 경우에 사용함
@RequestMapping("/{name}")
public String printName(@PathVariable String name, Model model ) {
model.addAttribute("name", name);
return "home";
}
“/…/name=gildong;age=19/…/ 과 같이 url에 포함된 다중 피라미터를 사용하는 경우에 사용
<annotation-driven enable-matrix-variables="true"/>
//url에 다중피라미터를 사용하는 경우 url=”/name=gilding;age=19”
@RequestMapping("/{user}")
public String printUser(
@MatrixVariable(value="name", pathVar="user") String name,
@MatrixVariable(value="age", pathVar="user") String age,
Model model) {
System.out.println(name);
System.out.println(age);
return "home";
}
// Map과 함께 사용하여 value를 따로 지정하지 않고 한번에 받기 가능
@RequestMapping("/{user}")
public String printUser(
@MatrixVariable(pathVar="user") Map<String,String> param,
Model model) {
System.out.println(param.get("name"));
System.out.println(param.get("age"));
return "home";
}
“/user?name=gildong” 와 같이 url경로에 “?”로 구분된 피라미터를 처리하기 위해 사용하는 방식
//url에 포함된 피라미터를 처리하는 가장 일반적인 방식 url= "/user?name=gildong"
@RequestMapping("/user")
public String Home(@RequestParam String name, Model model) {
System.out.println(name);
return "home";
}
DTO객체를 생성하여 url쿼리로 넘어온 피라미터를 생성된 DTO객체에 자동으로 바인딩후 model에 추가함, jsp에서는 생성된 객체를 getter를 이용하여 사용
//url피라미터를 model에 DTO객체로 전달 url="/user?name=gildong&age=19"
@RequestMapping("/user")
// @ModelAttribute의 "user"속성은 model에 전달된 객체명임 따라서 jsp에서 사용시 ${user.getName()}과 같이 사용한다
public String Home(@ModelAttribute("user") HomeDTO user, Model model) {
System.out.println(user.getName());
System.out.println(user.getAge());
return "home";
}
http body데이터의 변환은 HttpMessageConverter을 이용하고, HttpMessageConverter은 변환할 데이터가 json, xml, string인지에 따라 여러 구현된 클래스가 존재한다.
http 헤더의 content-type 설정에 따라 변환을 진행할 HttpMessageConverter종류가 달라진다 이를 통하여 변환될 데이터의 종류를 지정 가능하다
예를들어 body의 내용을 json으로 변환하기 위해서는 content-type를 application/json으로 설정하면 MappingJacksonHttpMessageConverter클래스를 이용하여 json형태로 데이터를 변환한다.
http request의 body내용을 HttpMessageConverter을 이용하여 자바 객체로 변환
- MappingJacksonHttpMessageConverter을 이용하면 json데이터를 변환가능
http response의 body에 HttpMessageConverter을 이용하여 데이터 세팅
- MappingJacksonHttpMessageConverter을 이용하면 json데이터를 변환가능
MappingJacksonHttpMessageConverter클래스 추가됨
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
//http body내용을 객체로 받고 body 내용 세팅하기
@RequestMapping("/user")
public @ResponseBody HomeDTO Home(@RequestBody HomeDTO user) {
HomeDTO dto = new HomeDTO();
dto.setName(user.getName());
dto.setAge(user.getAge());
return dto;
}