요약해서 말하자면, @RequestParam은 1:1매핑, @ModelAttribute은 객체 매핑을 할 때 사용한다.
HttpServletRequest
-getParameter
@controller
public class MvcController{
@RequestMapping("/mvc.do")
public String mvcInit(HttpServletRequest req){
String value = req.getParaMeter("name");
return "board/index";
}
}
getParameter는 key-value 형태로 전달된 하나의 파라메터를 받는 메서드이다
key값을 인자로 전달하면 하나의 value값을 반환한다.
view에서 mvc.do를 키값으로 받아 value값을 view단인 /WEB-INF/views/boar/index.jsp로 반환
-getParameterValues
@Controller
public class MvcController{
@RequestMapping("/mvc.do")
public String mvcInit(HttpServletRequest req){
String[] value = req.getParaMeter("name");
return "board/index";
}
}
하나의 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 str1,
@RequestPram HashMap<String, Object> map,
@RequestParam("str2") String g,
string str3
)
{
model.addAttribute("str1",str1);
model.addAttribute("str2",g);
model.addAttribute("str3",str3);
return "board/index";
}
}
-지정하지 않아도 기본적으로 @RequestParam 처리가 된다.
-from 태그의 속성과 통일하면 @RequestParam의 매개변수로 지정하지 않아도 되지만, 속성과 매개변수의 이름이 다르면 매개변수를 지정을 해 줘야한다.
-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' 카테고리의 다른 글
로그인시 사용하는 HttpServletRequest와 HttpSession (0) | 2023.11.13 |
---|---|
ModelAttribute,RedirectAttributes (0) | 2023.11.13 |
Model,ModelMap vs ModelAndView (0) | 2023.11.13 |
CDN (0) | 2023.07.10 |
SpringBoot에서 JSP 사용 (0) | 2023.07.10 |