스프링/3. 스프링 MVC

42. 스프링으로 파라미터 꺼내기

sdafdq 2023. 8. 12. 18:29
@Slf4j
@Controller
@RequestMapping
public class RequestParamController {
    @RequestMapping("/request-param-v1")
    public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String username = request.getParameter("username");
        int age = Integer.parseInt(request.getParameter("age"));
        log.info("username={}, age={}",username,age);;

        response.getWriter().write("ok");
    }

    @ResponseBody
    @RequestMapping("/request-param-v2")
    public String requestParamV2(
            @RequestParam("username") String memberName,
            @RequestParam("age") int memberAge){
        log.info("username={}, age={}",memberName, memberAge);
        return "ok";
    }

    @ResponseBody
    @RequestMapping("/request-param-v3")
    public String requestParamV3(
            @RequestParam String username,
            @RequestParam int age){
        log.info("username={}, age={}",username, age);
        return "ok";
    }

    @ResponseBody
    @RequestMapping("/request-param-v4")
    public String requestParamV4( String username, int age){
        log.info("username={}, age={}",username, age);
        return "ok";
    }

    @ResponseBody
    @RequestMapping("/request-param-required")
    public String requestParamRequired(
            @RequestParam(required = true) String username,
            @RequestParam(required = false) Integer age){
        log.info("username={}, age={}",username, age);
        return "ok";
    }

    @ResponseBody
    @RequestMapping("/request-param-default")
    public String requestParamDefault(
            @RequestParam(defaultValue = "guest") String username,
            @RequestParam(defaultValue = "-1") int age){
        log.info("username={}, age={}",username, age);
        return "ok";
    }
    @ResponseBody
    @RequestMapping("/request-param-map")
    public String requestParamMap(Map<String, Object> paramMap){
        log.info("username={}, age={}",paramMap.get("username"), paramMap.get("age"));
        log.info(" age type={}", paramMap.get("age"));
        return "ok";
    }
}

@RequestParam으로 붙여서 받고,

저 때 변수이름이 요청파라미터의 키와 같다면 알아서 받아지고 형변환도 해줌.

 

그리고 아예 @RequestParam 자체를 안붙여도 됨. 변수이름이랑 키가 같다면.

 

required를 설정할 수 있음.

참고로 

    @ResponseBody
    @RequestMapping("/request-param-required")
    public String requestParamRequired(
            @RequestParam(required = true) String username,
            @RequestParam(required = false) Integer age){
        log.info("username={}, age={}",username, age);
        return "ok";
    }

이거 보면 int가 아니고 Integer인데 이거는 int에는 null이 들어갈 수 없기 때문에 그럼. 기본타입이 아닌 객체는 null 들어갈 수 있음.

 

 

defaultValue 설정 가능

Map으로 받으면 아예 파라미터 전체를 받을 수 있음.

그런 경우는 잘 없지만, 한 키가 여러 값을 가질 경우 MutiValueMap으로 받으면 됨.

 

 

'스프링 > 3. 스프링 MVC' 카테고리의 다른 글

44. HTTP API  (0) 2023.08.12
43. ModelAttribute  (0) 2023.08.12
41. 요청 파라미터 종류  (0) 2023.08.12
40. 요청 종류에 따른 api 구현  (0) 2023.08.12
39. 요청매핑  (0) 2023.08.11