Controller 파라미터 수집
Controller의 파라미터 Controller 를 작성할 때 가장 편리한 기능은 파라미터가 자동으로 수집되는 기능이다. 이 기능을 사용하면 request.getParameter()를 이용하는 불편함을 없앨 수 있다.
예제
com.mall.domain 이라는 패키지를 작성하고, SampelDTO 클래스를 작성
@DATA 어노테이션
getter/setter, equals(). toString() 등의 메서드를 자동 생성하기 떄문에 편리하다.
controller에 @getMapping을 사용하여 쿼리스트링에 입력하여 name과 age에 입력값을 출력해 보도록 해보겠다.
controller에 아래와 같이 입력
@Controller
@Log4j
@RequestMapping("/sample/*")
public class SampleController {
@GetMapping("/ex01")
public String ex01(SampleDTO dto) {
log.info(""+ dto);
return "ex01";
}
}
주소창에 아래와 같이 name과 age에 값을 입력
참고: url 에 대한 자세한 부분은 https://float.tistory.com/136에서 다뤘다.
console 창에서 아래와 같이 값이 나타난다. SampelDTO 객체 안에 name과 age 속성이 수집된 것을 볼 수 있다. 그리고 자동으로 타입을 변환해서 처리한다.
파라미터의 수집과 변환
Controller 가 파라미터를 수집하는 방식은 파라미터 타입에 따라 자동으로 변환하는 방식을 이용한다.
만약에 기본자료형이나 문자열을 이용한다면 파라미터의 타입만 맞게 선언해주는 방식을 사용할 수 있다.
ex02() 메서드는 파라미터에 @RequestParam 어노테이션을 사용해서 작성되었다.
@RequestParam는 파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 다른 경우에 유용하게 사용된다.
리스트와 배열처리
리스트처리
동일한 이름의 파라미터가 여러개 전달되는 경우에는 ArrayList<> 등을 이용해서 처리 가능하다.
주소창에 아래와 같이 입력한다.
console창에 출력된 값을 볼 수 있다.
배열처리
주소창에 아래와 같이 입력한다
console창에 출력된 값을 볼 수 있다.
객체 리스트
전달하는 데이터가 SampleDTO와 같이 객체 타입이고 여러 개를 처리해야한다면 약간의 작업을 통해서 한 번에 처리 하할 수 있다.
SampleDTOList.java 를 만들어서 그안에 아래의 코드를 작성한다.
@Data
public class SampleDTOList {
private List<SampleDTO> list;
public SampleDTOList() {
list = new ArrayList<>();
}
}
controller에 아래와 같이 작성한다.
@GetMapping("/ex02Bean")
public String ex02Bean(SampleDTOList list) {
log.info("list dtos:" + list);
return "ex02Bean";
}
전송하려는 url
프로젝트경로/sample/0x02Bean?list[0].name=aaa&list[2].name=bbb
Tomcat 버전에 따라서 위와같이 [ ] 문자를 특수문자로 허용하지 않을 수 있기 때문에 아래와 같이 작성한다.
프로젝트경로/sample/ex02Bean?list%5B0%5D.name=aaa&list%5B1%5D.name=BBB&list%5B2%5D.name=CCC
console창에서 아래와 같이 출력이 되며 출력결과를 보면 3개의 SampelDTO 객체가 생성된 것을 볼 수 있다.
[ ] 안에 인덱스번호에 맞게 객체의 속성 값이 세팅되었다.
'Springboot' 카테고리의 다른 글
[MSA] 1. Spring cloud Anrifragile & 아키텍처 (0) | 2023.12.22 |
---|---|
DTO 사용 방법 (0) | 2022.05.03 |
[SpringBoot & JPA ] 판매자 POST와 GET 방식 (0) | 2022.02.14 |
MVC, 템플릿 엔진 (0) | 2021.09.24 |
JPA 란? (0) | 2021.07.27 |