-
form 속성, redirect:스프링 프레임워크 2019. 5. 4. 19:58
<form>의 method 속성이 'post'로 지정된 것과 action아 지정되지 않은 것을 볼 수 있다.
이런 경우에는 현재경로를 그대로 action의 대상 경로로 잡게 된다.
<form role="form" method="post"> <div class="box-body"> <div class="form-group"> <label for="exampleInputEmail1">Title</label> <input type="text" name='title' class="form-control" placeholder="Enter Title"> </div> <div class="form-group"> <label for="exampleInputPassword1">Content</label> <textarea class="form-control" name="content" rows="3" placeholder="Enter ..."></textarea> </div> <div class="form-group"> <label for="exampleInputEmail1">Writer</label> <input type="text" name="writer" class="form-control" placeholder="Enter Writer"> </div> </div> <!-- /.box-body --> <div class="box-footer"> <button type="submit" class="btn btn-primary">Submit</button> </div> </form>
글작성완료시 새로고침을 하게 되면 POST방식으로 다시 한 번 데이터를 전송할 것인지를 묻는다.
이럴 경우에 계속을 클릭하게 되면 같은 글이 다시 등록되는데(동일한 데이터 재전송) 이것을 방지하기 위해서 redirect:를 사용할 수 있다.
여기서 새로고침후에 URI에 값을 없에주기 위해서는 리다이렉트 시점에 한 번만 사용되는 데이터를 전송할 수 있는 RedirectAttributes의 addFlashAttribute()를 사용할 수 있다.
addFlashAttribute()는 브라우저까지 전송되기는 하지만, URI상에는 보이지 않는 숨겨진 데이터의 형태로 전달된다.
@RequestMapping(value = "/register", method = RequestMethod.POST) public String registPOST(BoardVO board, RedirectAttributes rttr) throws Exception { logger.info("regist post ..........."); logger.info(board.toString()); service.regist(board); rttr.addFlashAttribute("msg", "success"); return "redirect:/board/listAll"; }
'스프링 프레임워크' 카테고리의 다른 글
Spring MVC에서의 예외처리 (0) 2019.05.04 $("form[role='form']"); (0) 2019.05.04 get과 post방식 (0) 2019.05.01 스프링의 UTF-8 처리 필터 등록 (0) 2019.05.01 스프링 MyBatis 연동 (0) 2019.04.29