게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
스프링부트에서 rest방식 질문2
게시물ID : programmer_18779짧은주소 복사하기
작성자 : 아이폰어른폰
추천 : 0
조회수 : 532회
댓글수 : 2개
등록시간 : 2016/10/19 12:13:38
옵션
  • 본인삭제금지
이전질문에서 답변주신것들 찾아보다가 책을 뒤져보니 HiddenHttpMethodFilter라는게 있더라구요.
웹 브라우저에서는 GET이나 POST 방식만 지원하기때문에 PUT과 DELETE 방식으로 요청을 전송할 수 없어서 스프링에서 지원해주는 필터라는데....
웹 브라우저에서 어떻게 PUT이나 DELETE 방식으로 요청을 하는지를 몰랐던터라 매우 기뻐하긴 했는데 문제가 또 생겼네요....!!!!!!!!!!!!1

controller에서는
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RequestMapping(value="/post/{bno}", method=RequestMethod.GET)//수정페이지
    public ModelAndView updateForm(@PathVariable("bno"int bno) throws Exception{ 
        BoardVO board = boardMapper.boardView(bno);
        return new ModelAndView("boardUpdate","board",board);
    }
    
    
    @RequestMapping(value="/post/{bno}", method=RequestMethod.PUT) //수정기능
    public ModelAndView update(@ModelAttribute("BoardVO")BoardVO board,@PathVariable("bno"int bno) throws Exception{
        boardMapper.boardUpdate(board);
        return new ModelAndView("redirect:/board");
    }
    
    @RequestMapping(value="/post/{bno}", method=RequestMethod.DELETE) //삭제기능
    public ModelAndView delete(@PathVariable("bno"int bno) throws Exception{
        boardMapper.boardDelete(bno);
        
        return new ModelAndView("redirect:/board");
    }
cs
위에 updateForm이 수정페이지로 이동하는 메서드고, 아래에 update가 실제 db가 수정되는 부분입니다.

그리고 jsp는
1
2
3
4
5
6
7
8
<div class="form-group">
    <!--수정버튼-->
    <input type="button" value="수정" onclick='location.href="/board/post/${board.bno}"'>
    <!--삭제버튼-->
    <form:form action="/board/post/${board.bno}" method="DELETE">
      <input type="submit" value="삭제">
    </form>
</div>
cs


HiddenHttpMethodFilter를 설정하고 jsp에서 <form:form>태그의 method가 DELETE 또는 PUT인 경우 hidden타입의 <input>태그가 추가로 생성된다고 하네요.
1
2
3
4
<form action="/board/post/${board.bno}" method="POST">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="삭제">
</form>
cs


이런식으로요. 그럼 HiddenHttpMethodFilter가 요청 파라미터에 _method가 있을경우 _method의 값을 요청 방식으로 사용할 수 있게 해주는 기능이라고 합니다.
브라우저에서 어떻게 put 방식이나 delete방식으로 요청을 하는가에 대해 알게되고 설정과 사용 또한 간편해서 매우 기쁘긴한데 
<form:form>태그를 매번 써줘야 하는건가 싶네요 ㅜㅜㅜㅜㅜㅜ 아니면 @RequestMapping의 consumes를 이용해서 요청헤더가 application/json 인 경우에만 처리를 하게끔 해야하는건지...

혹시 스프링으로 rest서비스 구현해보신분 계시면 조언 부탁드립니다 ㅜㅜ


dlfjsd
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호