[Spring] Requestparam

Posted by 신희준 on December 16, 2017



2017 - 12 - 16 (토)


RequestParam 애너테이션 활용

  • RequestParam 으로 매개변수 명이 보내는 값의 이름과 같을경우 @ReqeustParam(“키값”) 을 @RequestParam 으로 줄여 사용할 수 있다.
@Controller
@RequestMapping("/user")
public class EmployeeController {

    @RequestMapping("/authenticate")
    public void requestParameter (@RequestParam String test) {

        logger.info(test);

    }
}
  • JSON 형태의 값을 받을 때 : {‘email’ : email} 형태의 JSON 데이터를 /user/authenticate 로 보낸다.
<script>
$(document).on('click','#authenticate',function(){
	var email = $('#email').val()
    $.ajax({
        url:'/user/authenticate',
        type:'POST',
        data: {'email' : email},
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        dataType : "json",
        success:function(data){
    });
});
});
</script>
  • RequestParam 으로 받기 : @RequestParam(“JSON 의 키 값”) 형태로 받는다.
@RequestMapping(value = "/authenticate" , method = RequestMethod.POST, produces = "application/json; charset=utf-8")
	public @ResponseBody String checkDuplicate(HttpServletResponse response,  @RequestParam("email") String email, Model model)throws Exception {
    system.out.print(email);
		return responseMsg;

	}
  • list 형태의 값을 전달 할 때 : 각각의 input box 에 동일한 name 을 준다.
<form action = "/sclass/register">
  <input type = "text" name = "video_path">
  <input type = "text" name = "video_path">
  <input type = "text" name = "video_path">
  <input type = "submit">
</form>  
  • @RequestParam(“폼 태그 name 속성 값”) 형식으로 사용한다.
@RequestMapping(value = "/getRegist2", method = {RequestMethod.POST}, produces = "text/plain; charset=UTF8")
public String register2(@RequestParam("video_path") List<String> list)throws Exception {

  ArrayList<VideoVO> videoArr = new ArrayList<VideoVO>();
  for(int i =0; i<list.size(); i ++) {
    VideoVO videovo = new VideoVO();
    videovo.setVideo_path(list.get(i));
    videoArr.add(videovo);
  }

  request.setAttribute("vidioInfo", videoArr);

  return "sclass/register2";
}
  • @PathVariable 과 비교 : @PathVariable 애너테이션 사용시 곧장 값을 받을 수 있다. 분류 작업에 효율적으로 사용할 수 있을 거라 생각한다. 또한 하나의 컨트롤러를 유용하게 사용할 수 있다.
@RequestMapping("/user/{cri}")
public void test(@PathVariable String cri){
  System.out.println("================");
  System.out.println("페이징 번호:"+cri);
  System.out.println("================");
}