- homeController에서 매개면수 Locale은 현재 시간을 뜻한다.
- Model은 데이터 전달자로, 데이터를 request scope에 저장하려고 하면 Model이라는 전달자를 request대신에 사용하는것
- request 객체가 model안에 포함되어 있다.
package com.example.ex02.controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.ex02.domain.vo.InfoDTO;
import lombok.extern.log4j.Log4j;
@Controller
@RequestMapping("/ex/*")
@Log4j
public class SampleController {
@RequestMapping(value ="/basic",method = {RequestMethod.GET, RequestMethod.POST})
public void basic(HttpServletRequest req) {
log.info("basic····"+req.getMethod());
}
@RequestMapping
public void basic2() {
log.info("basic2");
}
@GetMapping("/basicOnlyGet")
public void basic3() {
log.info("basic3 only get");
}
//외부에서 전달된 파라미터를 매개변수 필드명과 자동으로 매핑한다.
@GetMapping("/ex01")
public void ex01(InfoDTO infoDTO) {
log.info("ex01"+infoDTO.getName()+","+infoDTO.getAge());
}
//외부에서 전달된 파라미터의 이름과 매개변수가 다를경우 @RequestParam을 통해 어디로 전달받을지 알려준다.
@GetMapping("/ex02")
public void ex02(@RequestParam("data1") String name, @RequestParam("data2")int age) {
log.info("ex02"+name+","+age);
}
//파라미터를 arrayList 사용 return을 사용해 바로 경로가 ex03으로 뜰 수 있도록 지정
@GetMapping("/ex03")
public String ex03(@RequestParam("data") ArrayList<String> datas) {
log.info("datas:"+datas);
return "ex03";
}
}
- 만약 매게변수가 객체라면, 해당 클래스타입의 앞글자만 소문자로 변경된 값이 화면에서 사용할 key값이다
- 예) 매개변수 타입이 InfoDTO라면 화면에서 사용 시 key값은 infoDTO가 된다.
- 만약 key값을 수정하거나 매개변수가 많아진다면, 직접 requestScope에 담아서 전달해야한다.
- 이때 request 객체를 직접 불러오지 않고, Model이라는 데이터전달자를 사용하게된다
- 하지만 화면쪽에 전달할 데이터가 여러개가 아니라면 @ModelAttribute()를 사용하여 화면에 전달해 준다.
- ModelAttribute를 사용하지 않으면 내가 적은 파라미터의 첫글자가 소문자로 바뀐걸 키값으로 설정한다.
@GetMapping("/ex04")
예) 매개변수 타입이 InfoDTO라면 화면에서 사용 시 key값은
infoDTO가 된다.
public String ex04(~~@ModelAttribute("dto")~~ InfoDTO infoDTO) {
log.info("======================");
log.info("Ex04........");
log.info(infoDTO.toString());
log.info("======================");
return "ex04";
}
---------------------------------------
<body>
<h1>ex04PAGE</h1>
<table border="1">
<tr>
<th>이름</th>
<th>나이</th>
</tr>
<tr>
<td><c:out value="${infoDTO.name}"></c:out></td>
<td><c:out value="${infoDTO.age}"></c:out></td>
~~<td><c:out value="${dto.name}"></c:out></td>
<td><c:out value="${dto.age}"></c:out></td>~~
</tr>
</table>
</body>
</html>