๐งฉ RequestParam , ResponseParam
- @ReuqestParam ์ด๋
ธํ
์ด์
์ HttpServletRequest ๊ฐ์ฒด์ ๊ฐ์ ์ญํ ์ ํ๋ค.
- HttpServletRequest์์๋ getParameter() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ง๋ง, @RequestParam์ ์ด์ฉํด์ ๋ฐ์์ค๋ ๋ฐฉ๋ฒ๋ ์๋ค.
- ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๊ฐ์ผ๋ก @RequestParam์ ๋ฃ์ด์ฃผ๋ฉด๋๋ค.
๐งฉ์ค์ต
<body>
<form action="/request-param-v1" method="post">
username : <input type="text" name="username"/><br>
age : <input type="text" name="age">
<button type="submit">์ ์ก</button>
</form>
</body>
2) HelloData
- lombok jar ํ์ผ ์ฌ์ฉ
- Getter Setter ToString๋ฅผ @Getter @Setter @ToString ๋์ฒด
@Getter @Setter @ToString
public class HelloData {
private String username;
private int age;
}
3) RequestParamController
- @RequestParam ์๋ ๊ฒฝ์ฐ required=true ๊ธฐ๋ณธ
- @RequestParam ์๋ ๊ฒฝ์ฐ required=false ๊ธฐ๋ณธ
3-1) @ResponseBody
@Controller
์ด๋
ธํ
์ด์
์ด ์์ฑ๋ ์๋ฐํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ๊ณ ์ ํ ๋๋ @ResponseBody
๋ฅผ ์ฌ์ฉ
view
์กฐํ๋ฅผ ๋ฌด์ํ๊ณ , HTTP message body
์ ์ง์ ํด๋น ๋์ฉ ์
๋ ฅ
- response.getWriter().write("ok"); -> @ResponseBody
๋ด๊ณ ์ ํ๋ ๋ฉ์ธ์ง๋ฅผ String
ํ์
์ผ๋ก ๋ฆฌํดํด์ค๋ค
3-2) @RequestParam
- ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ผ๋ก ๋ฐ์ธ๋ฉ
- name์์ฑ์ด ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ
3-3) defaultValue
- ํ๋ผ๋ฏธํฐ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ defaultValue๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ๊ฐ์ ์ ์ฉํ ์ ์๋ค.
- ๊ธฐ๋ณธ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ required๋ ์๋ฏธ๊ฐ ์๋ค
- ๋น ๋ฌธ์์ด์๋ ์ ์ฉ
@Controller
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"));
System.out.println("username : "+ username);
System.out.println("age : "+ age);
response.getWriter().write("ok");
}
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(@RequestParam("username") String username,
@RequestParam("age") int age)
throws IOException {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV3(@RequestParam String username,@RequestParam int age)
throws IOException {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4( String username, int age) throws IOException {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-required")
public String requestParamRequired(@RequestParam(required=true) String username,
@RequestParam(required=false) Integer age) throws IOException {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-default")
public String requestParamDefault(
@RequestParam(required=true, defaultValue = "guest") String username,
@RequestParam(required=false, defaultValue = "-1") Integer age)
throws IOException {
System.out.println("username : "+ username);
System.out.println("age : "+ age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(@RequestParam Map<String, Object> paramMap )
throws IOException {
System.out.println("username : "+ paramMap.get("username"));
System.out.println("age : "+ paramMap.get("age"));
return "ok";
}
@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@RequestParam String username,
@RequestParam int age) {
HelloData hello = new HelloData();
hello.setUsername(username);
hello.setAge(age);
System.out.println("username : " + hello.getUsername());
System.out.println("age : " + hello.getAge());
return "ok";
}
@ResponseBody
@RequestMapping("/model-attribute-v2")
public String modelAttributeV2(@ModelAttribute HelloData helloData) {
System.out.println("username : " + helloData.getUsername());
System.out.println("age : " + helloData.getAge());
System.out.println("HelloData : " + helloData.toString());
return "ok";
}
@ResponseBody
@RequestMapping("/model-attribute-v3")
public String modelAttributeV3( HelloData helloData) {
System.out.println("username : " + helloData.getUsername());
System.out.println("age : " + helloData.getAge());
System.out.println("HelloData : " + helloData.toString());
return "ok";
}
}
4) hello
<body>
<p th:text="${data}">empty</p>
</body>
5) ResponseViewController
5-1) ModelAndView
- Controller ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ํ ์๋ตํ view์ view์ ์ ๋ฌํ ๊ฐ์ ์ ์ฅ
@Controller
public class ResponseViewController {
@RequestMapping("/response-view-v1")
public ModelAndView responseViewV1() {
ModelAndView mav = new ModelAndView("response/hello").addObject("data","hello!");
return mav;
}
@RequestMapping("/response-view-v2")
public String responseViewV2(Model model) {
model.addAttribute("data","model data");
return "response/hello";
}
}