HttpServletRequest를 통해 컨트롤러로 전달된 파라미터를 받을 수 있습니다. 파라미터를 받는 메서드는 총 세 가지의 메서드가 있습니다.
getParameter
@Controller
public class MvcController {
@RequestMapping("/mvc.do")
public String mvcInit(HttpServletRequest req) {
// key값을 인자로 받아 value값을 반환
String value = req.getParameter("name");
return null;
}
}
getParameter는 key-value 형태로 전달된 하나의 파라미터를 받는 메서드입니다. key 값을 인자로 전달하면 value 값을 반환합니다.
getParameterValues
@Controller
public class MvcController {
@RequestMapping("/mvc.do")
public String mvcInit(HttpServletRequest req) {
// key와 연결된 모든 value 값을 배열로 반환
String[] value = req.getParameter("name");
return null;
}
}
getParamterValues는 getParameter와 다르게 하나의 key와 연결된 모든 value 값을 반환하여 배열의 형태로 반환합니다.
getParameterNames
@Controller
public class MvcController {
@RequestMapping("/mvc.do")
public String mvcInit(HttpServletRequest req) {
// 모든 key 값들을 반환함
Enumeration<String> names = req.getParameter();
// 다음 값이 있다면 실행
while(names.hasMoreElements()) {
// 다음 값으로 넘어감
String name = names.nextElement();
System.out.println(name);
}
return null;
}
}
getParameterNames는 전달된 모든 key 값들을 Enumeration이라는 배열과 비슷한 형태로 반환합니다. 배열과 같이 순회를 하기 위해서는 hasMoreElements 메서드로 다음 값이 존재하는지 확인을 해주고 nextElement 메서드로 다음 값으로 접근하여 순회합니다.
RequestParam은 전달된 파라미터를 쉽게 받을 수 있게 하는 어노테이션입니다.
예시
@Controller
public class MvcController {
@RequestMapping("/mvc.do")
public String mvcInit(@RequestParam String str, @RequestParam HashMap<String, Object> map) {
...
return null;
}
}
@RequestParam은 변수 value 값을 담을 변수에 붙여주면 되는데, 이때 변수명은 value값과 매칭이 되는 key명이어야 합니다. 또한, map 형태의 변수에 붙여주면 모든 key-value 값을 받을 수 있습니다.
value, required, defaultValue 속성
@RequestParam(value = "change", required = "true", defaultValue = "none")
value 속성으로 키 이름을 지정할 수 있습니다. required 속성은 파라미터의 필수 여부를 지정합니다. 해당 속성 값이 true 이면 꼭 파라미터가 전달되어야 하고 만약 전달되지 않으면 오류를 일으킵니다. defaultValue 속성은 파라미터가 전달되지 않았을 때 사용할 문자열 지정할 수 있습니다.
ModelAttribute는 객체에 붙이는 어노테이션으로써 객체의 필드에 value값을 매칭해 파라미터 값을 저장할 수 있습니다.
예시
@Controller
public class MvcController {
@RequestMapping("/mvc.do")
public String mvcInit(@ModelAttribute BoardVO boardVO) {
boardVO.getNumber(); // number값 반환
return null;
}
}
@ModelAttribute가 붙은 BoardVO 객체에 number라는 필드가 있으면 key=number, value=1이라는 파라미터를 받아 value 1 값을 저장합니다. 이때 BoardVO 객체에는 각 필드에 대한 getter, setter가 존재해야 합니다.
[Spring] 스프링 이클립스와 톰캣 연동하기 (0) | 2020.09.27 |
---|---|
[Spring] 스프링 @RequestBody, @ResponseBody 사용하기 (0) | 2020.09.27 |
[Spring] 스프링 JUnit을 이용하여 코드 테스트하기 (0) | 2020.09.27 |
[Spring] 스프링에서 파일 업로드하기 (0) | 2020.09.27 |
[Spring] 스프링 @RestController 사용하기 (0) | 2020.09.26 |