스프링이 제공하는 @RequestParam 을 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있습니다.
package hello.springmvc.basic.request;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@Controller
public class RequestParamController {
@ResponseBody //...2
@RequestMapping("/request-param-v2")
public String requestParamV2(
@RequestParam("username") String memberName, //...1
@RequestParam("age") int memberAge){
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
}
@RequestParam
파라미터 이름으로 바인딩
@RequestParam("username")에서 "username"이라는 name(value) 속성이 HTTP 메시지의 key(파라미터 이름)와 매핑이 됩니다.
@RequestParam("username") String memberName
⇒ request.getParameter("username") 와 같은 효과입니다.
그냥 return “ok”;를 하려고 했는데 @Controller면서 반환값이 String이면 ok라는 뷰를 찾게 됩니다.
이럴 때 그냥 ok란 문자를 HTTP 메시지 바디에 콱 넣고 싶다면 @Controller를 @RestController로 바꿔도 됩니다.
또는 @ResponseBody를 적어주면 됩니다. 그러면 ok 문자를 그대로 HTTP 응답 메시지에 넣어서 반환해줍니다. @RestController와 같은 효과입니다.
View 조회를 무시하고, HTTP message body에 직접 해당 내용 입력
실행
package hello.springmvc.basic.request;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@Controller
public class RequestParamController {
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV3(
@RequestParam String username,
@RequestParam int age){
log.info("username={}, age={}", username, age);
return "ok";
}
}
실행