파게로그
[Spring MVC] Query String 파싱, @RequestParam 본문
Java Doc for @RequestParam
Query String 파싱
Servlet programming에서는 다음과 같은 방식으로 HTTP 요청의 파라미터를 얻을 수 있다.
@RequestMapping("/index")
public void index(HttpServletRequest req) {
String p = req.getParameter("p");
int value = Integer.parseInt(p);
}
Spring을 사용하면 이는 보다 편하다.
HTTP 요청의 파라미터의 key를, 컨트롤러 메서드의 파라미터의 변수명으로 지정해주기만 해도 알아서 그 값이 담긴다.
@RequestMapping("/index")
public void index(String p) {
int value = Integer.parseInt(p);
}
게다가 바로 위 코드에서는, String p 대신 int p로 파라미터를 받아, 별도의 파싱 없이 바로 값을 이용할 수도 있다.
Query String 파싱 후 다른 변수명 사용
하지만 p가 아니라 다른 변수명으로 값을 받고 싶다면 어떻게 해야 할까? Query String은 URL에 포함되므로 변수명을 짧게 쓰려는 경향이 있기 때문에 이를 그대로 코드에 사용하고자 하면 불편할 수 있다. 예를 들어 key값 대신 full name을 사용하고 싶다면 아래와 같이 Annotation을 통해서 다른 변수명을 사용할 수 있다.
@RequestMapping("/index")
public void index(@RequestParam("p") String page) {
int value = Integer.parseInt(page);
}
기본값 설정
Null 예외를 막기 위해 기본값을 설정할 수도 있다. 이 또한 @RequestParam의 속성값 지정을 통해 가능하다. 참고로 여기서 name 대신 value라는 속성명으로도 사용할 수 있다.
@RequestMapping("/index")
public void index(@RequestParam(name="p", defaultValue="1") String page) {
int value = Integer.parseInt(page);
}
그리고 required의 속성의 기본값은 true인데 이를 false로 설정하면 값이 전달되지 않더라도 오류가 발생하지 않는다. 다만 int형은 null을 담지 못하므로 Integer형으로 선언해야 한다.
이외에도 Map으로도 받을 수 있다. 자세한 내용은 최상단의 공식문서를 참고한다.
'콤퓨타 왕기초 > Spring' 카테고리의 다른 글
[Spring MVC] POST 입력 - 파일 업로드 (0) | 2021.05.03 |
---|---|
[Spring MVC] POST 입력 및 한글 깨짐 (0) | 2021.05.03 |
[Spring MVC] 사용자 입력 (0) | 2021.05.03 |
[Spring MVC] Jackson.. 객체를 반환할 수 있도록 하기 (0) | 2021.05.02 |
@RestController와 한글 깨짐 (0) | 2021.05.02 |
Comments