[Spring]_Controller 파라미터 정리

2022. 6. 3. 11:27[Spring]_

728x90
반응형

스프링 컨트롤러를 작성하면서 사용한 파라미터 정리입니다.

 

1. @HttpServletRequest / @HttpServletResponse / @ServletRequest / @ServletResponse

@RequestMapping("/test")
String test1(HttpServletRequest request)
{
   String a = request.getParameter("a");
   System.out.println("a : " + a);

   return "data";
}

HTTP 에서 URL 요청시 전송한 값, 쿠키 ,세션,  헤더 등 클라이언트 정보를 가져올때 사용
웹브라우저 사용자인 클라이언트 -> 서버로 요청- > 서버에서 HttpServletRequest 를 생성, 서블릿에게 전달

받아올때 getParameter() 를 사용합니다.


2.HttpSession

HttpServletRequest 에서 가져올 수 있습니다.

@RequestMapping("/test")
String test1(@RequestParam Map<String, Object> param, HttpServletRequest request) {
   HttpSession session = request.getSession();
   param.put("user_id", session.getAttribute("userId").toString());

   return "data";
}

 

가져온 값은 getAttribute 메소드를 사용해서 가져올 수 있습니다.


3. @RequestParam

@RequestMapping("/test")
@ResponseBody
String test2(@RequestParam(value="username", required = false) String pwd,
          @RequestParam(value = "age", required = false) String pwd3, HttpServletRequest request) {
   HttpSession session = request.getSession();
   String test =pwd;

   return "data";
}

RequestParam은 1개의 HTTP 요청 파라미터를 받기 위해서 사용합니다.

 

여기서 요청 파라미터란 URL 요청의 localhost:8080?username=value&age=value 의 쿼리 매개변수와 HTML 태그의 Form 데이터가 해당합니다

 

@RequestParam은 필수 여부가 true이기 때문에 기본적으로 반드시 해당 파라미터가 전송되어야 합니다.

만약 해당 파라미터가 전송되지 않으면 400 Error가 발생합니다.

 

이를 방지하기 위해서 required = false 를 사용하여 방지할 수 있습니다.

 

HTML Form 태그에서 method 가 POST 전송일 때는 @RequestParam으로 값을 받을 수 있습니다

Form 데이터를 받는 경우에는 

@RequestMapping("/test")
@ResponseBody
String test1(@RequestParam Map<String, Object> param, HttpServletRequest request) {
   HttpSession session = request.getSession();
   String user = param.get("user").toString();
   String pwd = param.get("pwd").toString();

   return "data";
}

이렇게 사용 가능합니다.


4.@RequestBody

@RequestMapping("/test")
@ResponseBody
String test1(@RequestBody Map<String, Object> body, HttpServletRequest request) {
   HttpSession session = request.getSession();
   String id = body.get("id").toString();
   String pwd = body.get("pwd").toString();

   return "data";
}

HTTP 요청의 body 부분이 그대로 전달됩니다.

XML 이나 JSON 기반의 형식을 가지는 데이터 묶음을 요청하는 경우에 유용합니다.

 

감사합니다.

 

728x90
반응형