브라우저에서 컨트롤러로 get방식 또는 post방식으로 데이터를 전달받았을 때, Spring에서 처리하는 방법을 정리함.
(항상 서블릿만을 이용했던 MVC작업과 비교해서 확인할 것.)
<a href="sample/param1?name=홍길동&age=24">m05</a>
<a href="sample/param2?name=이순신&age=27">m06</a>
<a href="sample/param3?names=김좌진&names=유관순&names=강감찬">m07</a>
<a href="sample/param4?ns=김좌진&ns=유관순&ns=강감찬">m08</a>
<a href="sample/param5?names=김좌진2&names=유관순2&names=강감찬2">m09</a>
<!--<a href="sample/param6?list[0].name=홍길동&list[0].age=24&list[1].name=이순신&list[1].age=27">m10</a>-->
<a href="sample/param6?list%5B0%5D.name=홍길동&list%5B0%5D.age=24&list%5B1%5D.name=이순신&list%5B1%5D.age=27">m10</a>
<a href="sample/param7?name=홍길동&age=24&page=10">m11</a>
<a href="sample/param8?subject=데이트&cdate=2021/01/18 17:10:33">m12</a>하세요
위와 같이 get방식으로 브라우저에서 데이터를 넘길 때,
@RequestMapping(value="/param1")
public void m05(Human human) {
log.info("dto: "+ human); //DTO로 전달
}
@RequestMapping(value="/param2")
public void m06(@RequestParam String name, @RequestParam int age) {
log.info("파람이름: "+name); //파라미터이름으로 전달
log.info("파람나이: "+age); //뷰에서 넘겨주는 파라미터의 이름과 변수 이름이 같아야한다
}
@RequestMapping("/param3")
public void m07(@RequestParam ArrayList<String> names){
log.info("m07() names: " + names); //동일한 파라미터에 여러 데이터를 전달했을 때, 배열로 받을 수 있다
}
@RequestMapping("/param4")
public void m08(@RequestParam("ns") ArrayList<String> names){
log.info("m08() names: " + names); //(흔하지 않음)넘어오는 파라미터 이름과 변수이름이 다를 때, 이렇게 받을 수 있다.
}
@RequestMapping("/param5")
public void m09(@RequestParam String[] names){
log.info("m09() names: " + names); //동일한 파라미터에 여러 데이터를 전달했을 때, 배열로 받을 수 있다
for(String name: names) log.info("name: "+name);
}
@RequestMapping("/param6")
public void m10(HumanList hlist) {
log.info("배열 안의 내용을 출력 : "+hlist); //겟메소드를 쓰지 않고, 배열안의 내용을 출력해줄수 있는 기법. ****
}
@RequestMapping(value="/param7")
public void m011(Human human, @RequestParam int page) {
log.info("dto: "+ human); //DTO로 전달 + DTO에 없는 변수
log.info("page: "+ page);
}
@RequestMapping("/param8")
public void m12(ToDoDTO dto) {
log.info("m12() dto.getCdate(): " + dto.getCdate()); //시간데이터의 전달 ToDoDTO에서 패턴어노테이션
}
request.getParameter("파라미터이름")를 쓰지 않고, 전달받은 데이터를 쓸 수 있다.
파인트라고요 파인트