KyungHwan's etc.

스프링프레임워크 - View에서 Parameter 값 받기(@RequestBody, HttpServletRequest request) 본문

Java/스프링프레임워크

스프링프레임워크 - View에서 Parameter 값 받기(@RequestBody, HttpServletRequest request)

KyungHwan_0 2018. 6. 21. 09:47

View에서 Parameter 값 받기(@RequestBody, HttpServletRequest request)

View에서 파라미터 값을 컨트롤러로 받아오는 방법중에 두가지 방법이 있는데,

@RequestBody 어노테이션을 이용하여 가져오거나 HttpServletRequest 객체를 이용하여 가져오는 방법이 있다. 두가지 차이점이 있는데,

  • @RequestBody -> POST 방식

  • HttpServletRequest -> GET 방식


@RequestBody 어노테이션은 HTTP헤더 바디에 있는 데이터를 가져오기 때문에, POST 방식에서 파라미터값을 받아올때 사용된다.

HttpServletRequest객체에 request로 는 URL에 파라미터값을 가져와서 GET방식에서 사용된다. HttpServletRequest객체를 사용해 POST 방식으로도 사용할수 있으나, form 태그를 사용해야 하기 때문에, 보통 @RequestBody 어노테이션을 이용하여 간편하게 가져온다.

1. @RequestBody

    var logincheck = {

"id": $("#--id").val().trim(),
  "pass": $("#--pass").val().trim(),
 
};

  $.ajax({
  url : 'logincheck', //내가 보내는 서버주소(컨트롤러)
  dataType : 'text', //내가 서버로 부터 리턴받는 데이터 형태
  type : 'POST',
  contentType : 'application/json; charset=UTF-8', //보내는 데이터 형태
  data : JSON.stringify(logincheck), //내가 서버로 보내는 데이터
  success: function (data) {
  if (data == "OK") {
  location.replace("main");

View에서 AJAX를 통해 컨트롤러로 파라미터값을 전송한다.

    @RequestMapping("/logincheck")
public @ResponseBody String logincheck(Model model, HttpSession session, @RequestBody String paramData) throws ParseException{
// @RequestBody을 이용하여 paramData 스트링값으로 파라미터값을 가져온다
     
    System.out.println("로그인체크창 접속");
    System.out.println("반응:"+paramData);
   
    JSONParser parser = new JSONParser(); //–JSON Parser 생성
    JSONObject jsonObj = (JSONObject)parser.parse(paramData); //– 넘어온 문자열을 JSON 객체로 변환

컨트롤러에서 @RequestBody String paramData 을 선언하여, 파라미터를 가져올 인자를 설정하고, 가져올 인자를 토대로 파라미터값을 가져온다.

2. HttpServletRequest

<a href="delete?num=${dto.num}">삭제</a></div>
<a href="wwritereupdate?num=${dto.num}">수정</a></div>

View상에서 URL을 통해 파라미터를 넘긴다. 여기서 주목해야 할점은 delete?num=${dto.num} URL 에서 ?(물음표) 앞인 delete 로 컨트롤러는 매핑된다는 점이다.

    @RequestMapping("/delete")
public String delete(HttpServletRequest request, Model model){

IDao dao = sqlSession.getMapper(IDao.class);
   dao.deletelist(request.getParameter("num"));
   //URL로 넘어온 num값인 ${dto.num} 파라미터를 가져온다
return "redirect:main";
}

컨트롤러에서 HttpServletRequest 객체에서 request.getParameter("num")을 이용해 num에 파라미터 값을 가져와서 사용한다.

Comments