천발무금
976
2017-06-01 11:15:32 작성 2017-06-01 11:32:45 수정됨
0
757

스프링 GET, POST 방식 문의


안녕하세요~ 스프링 공부 중인 초급개발자입니다!


다름아니라, 보통 GET방식으로 보낼지, POST방식으로 보낼지 jsp에서 폼 서브밋등 사용 시 method에 GET이냐 POST냐 작성 하면 http 헤더 값에 GET인지 POST인지 박혀서 서버로 날아오지 않습니까? ㅎㅎㅎㅎ


그런데, 서버내부에서 처리할 때는 ㅎㅎ

예를들어 컨트롤러에서 return이나 redirect 하는 경우에는 무조건 GET 방식으로 보내지는지 해서요 ㅎㅎ


이런 궁금증이 생긴 이유가 RequestMapping에서 value 값이 같고 RequestMethod만 GET인지 POST인지 다른 2개의 메서드가 있을 때 redirect 할 때 무조건 GET 메서드로 이동하더라구요.


1. 그래서 컨트롤러에서 각 메서드에서 일반적인 주소 return이나 redirect하면 무조건 기본 타입이 GET이어서  RequestMethod가 GET인 메서드를 타게되는지 궁금해서 문의드립니다.


2. 컨트롤러에서 model.addAttribute("result", "success"); 라는 코드를 작성하면, 연결된 뷰로 success라는 스트링값이 result라는 키에 묶여서 전달되는 것으로 알고있습니다.

이 상황에서 redirect로 이동하게되면, 이동된 URL 뒤에 ?result=success 라고 전달됩니다. 

이 때 궁금한것이 저는 컨트롤러에서 따로 GET으로 보내라는 코드를 작성한 적이 없는데, 어떻게 자동으로 GET으로 보내지고, result 값이 GET 방식으로 전송되는지 궁금합니다.


[소스코드]

 @RequestMapping(value = "/register", method = RequestMethod.GET)

 public void registerGET(BoardVO board, Model model) throws Exception {


   logger.info("register get ...........");

 }

 

 @RequestMapping(value = "/register", method = RequestMethod.POST)

 public String registPOST(BoardVO board, Model model) throws Exception {


   logger.info("regist post ...........");

   logger.info(board.toString());

   if(board.getTitle() == null){

    logger.info("제목은 null값이에요...................");

    System.out.println("제목값 : "+board.getTitle());

   }

   else if(board.getTitle().equals("")){

    logger.info("제목은 빈값이에요...................");

    System.out.println("제목값 : "+board.getTitle());

   }


   service.regist(board);


   model.addAttribute("result", "success");

   //return "/board/success";

   

   //보낼 때 GET으로 보낼지 POST로 보낼지 설정해야하지 않나? 어떻게 GET으로 가고, result 값이 GET방식으로 전송되는지?

   return "redirect:/board/listAll"; 

 }

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.