[Spring] 파라미터를 객체에 주입해보자

서현서현·2022년 7월 12일
0

Spring

목록 보기
4/31

@HttpServletRequest.getParameter()

@RequestMapping("/test") 
public String test(HttpServletRequest req) {

	String userId = req.getParameter("userId");
	return userId; 
}

String을 반환


@HttpServletRequest.getAttribute()

@RequestMapping("/test") 
public String test(HttpServletRequest req) {

	String userId = req.getAttribute("userId");
	return userId; 
}

Object를 반환


@RequestParam

  • 쿼리스트링을 통해 url에서 파라미터값을 받는다. 속성은 value, required, defaultValue가 있다.
  • value : 쿼리스트링으로 받는 값은 key, 뒤에오는 변수에 해당값을 바인딩
  • required : true일경우 파라미터가 반드시 url에 있어야한다. 없으면 400 반환
  • defaultValue : 디폴트값
  • String, int 등 단순 타입이면 @RequestParam 생략 가능
@RequestMapping(value="/test", method=RequestMethod.GET)
public String test(@RequestParam(value="userId", defaultValue="ooeunz") String userId) {

	return "test"; 
}

@PathVariable

  • @Pathvariable 어노테이션은 RequestMapping의 {email}에 매핑된다, 쿼리스트링과 path value의 차이를 알면 쉽다
@RequestMapping(value="/test/{email}", method=RequestMethod.GET)
public String test(@PathVariable("email") String email) {

	return "test"; 
}

@RequestBody

  • 반드시 POST방식을 사용해야한다.
  • JSON이나 XML, VO객체 전체를 받을경우 사용
@RequestMapping("/test")
public String test(@RequestBody Map<String, Obejct> obj) {
	Account account = obj.get("account"); 
	return "test"; 
}

@ModelAttribute

  • 쿼리 파라미터로 받게되는 변수를 객체에 주입
    @ModelAttrubute를 사용하면 쿼리파라미터의 데이터들이 객체의 프로퍼티로 바인딩된다.

  • 프로퍼티에 해당하는 쿼리 파라미터가 없다면 기본값이 들어간다.

  • 생략이 가능하다.

  • 커맨드객체라고도 부른다.

  • request영역에 자동으로 저장된다.

public class Criteria {
	
	private int page;
	private int perPageNum;
	
    // getter, setter
}
@RequestMapping(value="/listPage", method=RequestMethod.GET)
	public void listPage(@ModelAttribute("cri") Criteria cri, Model model) throws Exception {
		
		logger.info(cri.toString());
		...
		
	}

이런 코드가 있고
/board/listPage?page=1&perPageNum=10
으로 요청을 보내면 cri에 위 값들이 자동으로 바인딩된다.

0개의 댓글