<font size="3">이전질문에서 답변주신것들 찾아보다가 책을 뒤져보니 HiddenHttpMethodFilter라는게 있더라구요.</font> <div><font size="3">웹 브라우저에서는 GET이나 POST 방식만 지원하기때문에 PUT과 DELETE 방식으로 요청을 전송할 수 없어서 스프링에서 지원해주는 필터라는데....</font></div> <div><font size="3">웹 브라우저에서 어떻게 PUT이나 DELETE 방식으로 요청을 하는지를 몰랐던터라 매우 기뻐하긴 했는데 문제가 또 생겼네요....!!!!!!!!!!!!1</font></div> <div><font size="3"><br></font></div> <div><font size="3">controller에서는</font></div> <div><div class="colorscripter-code" style="color:#f0f0f0;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;"> <table class="colorscripter-code-table" style="margin:0px;padding:0px;border:none;background-color:#272727;" cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:6px;border-right:2px solid rgb(79,79,79);"> <div style="margin:0px;padding:0px;text-align:right;color:#aaaaaa;line-height:130%;"> <div style="line-height:130%;">1</div> <div style="line-height:130%;">2</div> <div style="line-height:130%;">3</div> <div style="line-height:130%;">4</div> <div style="line-height:130%;">5</div> <div style="line-height:130%;">6</div> <div style="line-height:130%;">7</div> <div style="line-height:130%;">8</div> <div style="line-height:130%;">9</div> <div style="line-height:130%;">10</div> <div style="line-height:130%;">11</div> <div style="line-height:130%;">12</div> <div style="line-height:130%;">13</div> <div style="line-height:130%;">14</div> <div style="line-height:130%;">15</div> <div style="line-height:130%;">16</div> <div style="line-height:130%;">17</div> <div style="line-height:130%;">18</div> <div style="line-height:130%;">19</div></div></td> <td style="padding:6px 0px;"> <div style="margin:0px;padding:0px;color:#f0f0f0;line-height:130%;"> <div style="padding:0px 6px;white-space:pre;line-height:130%;">@RequestMapping(value<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span><span style="color:#ffd500;">"/post/{bno}"</span>, method<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span>RequestMethod.GET)<span style="color:#999999;">//수정페이지</span></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">public</span> ModelAndView updateForm(@PathVariable(<span style="color:#ffd500;">"bno"</span>) <span style="color:#4be6fa;">int</span> bno) <span style="color:#ff3399;">throws</span> Exception{ </div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> BoardVO board <span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span> boardMapper.boardView(bno);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">return</span> <span style="color:#ff3399;">new</span> ModelAndView(<span style="color:#ffd500;">"boardUpdate"</span>,<span style="color:#ffd500;">"board"</span>,board);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> }</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> </div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> </div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> @RequestMapping(value<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span><span style="color:#ffd500;">"/post/{bno}"</span>, method<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span>RequestMethod.PUT) <span style="color:#999999;">//수정기능</span></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">public</span> ModelAndView update(@ModelAttribute(<span style="color:#ffd500;">"BoardVO"</span>)BoardVO board,@PathVariable(<span style="color:#ffd500;">"bno"</span>) <span style="color:#4be6fa;">int</span> bno) <span style="color:#ff3399;">throws</span> Exception{</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> boardMapper.boardUpdate(board);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">return</span> <span style="color:#ff3399;">new</span> ModelAndView(<span style="color:#ffd500;">"redirect:/board"</span>);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> }</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> </div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> @RequestMapping(value<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span><span style="color:#ffd500;">"/post/{bno}"</span>, method<span style="color:#0086b3;"></span><span style="color:#ff3399;">=</span>RequestMethod.DELETE) <span style="color:#999999;">//삭제기능</span></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">public</span> ModelAndView delete(@PathVariable(<span style="color:#ffd500;">"bno"</span>) <span style="color:#4be6fa;">int</span> bno) <span style="color:#ff3399;">throws</span> Exception{</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> boardMapper.boardDelete(bno);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> </div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#ff3399;">return</span> <span style="color:#ff3399;">new</span> ModelAndView(<span style="color:#ffd500;">"redirect:/board"</span>);</div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> }</div></div> <div style="text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f;text-decoration:none;">Colored by Color Scripter</a></div></td> <td style="vertical-align:bottom;padding:0px 2px 4px 0px;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:#FFFFFF;"><span style="font-size:9px;background-color:#4f4f4f;padding:1px;">cs</span></a></td></tr></tbody></table></div></div> <div><font size="3">위에 updateForm이 수정페이지로 이동하는 메서드고, 아래에 update가 실제 db가 수정되는 부분입니다.</font></div> <div><font size="3"><br></font></div> <div><font size="3">그리고 jsp는</font></div> <div><div class="colorscripter-code" style="color:#f0f0f0;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;"> <table class="colorscripter-code-table" style="margin:0px;padding:0px;border:none;background-color:#272727;" cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:6px;border-right:2px solid rgb(79,79,79);"> <div style="margin:0px;padding:0px;text-align:right;color:#aaaaaa;line-height:130%;"> <div style="line-height:130%;">1</div> <div style="line-height:130%;">2</div> <div style="line-height:130%;">3</div> <div style="line-height:130%;">4</div> <div style="line-height:130%;">5</div> <div style="line-height:130%;">6</div> <div style="line-height:130%;">7</div> <div style="line-height:130%;">8</div></div></td> <td style="padding:6px 0px;"> <div style="margin:0px;padding:0px;color:#f0f0f0;line-height:130%;"> <div style="padding:0px 6px;white-space:pre;line-height:130%;"><<span style="color:#ff3399;">div</span> <span style="color:#a8ff58;">class</span>=<span style="color:#ffd500;">"form-group"</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#999999;"><!--수정버튼--></span></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <<span style="color:#ff3399;">input</span> <span style="color:#a8ff58;">type</span>=<span style="color:#ffd500;">"button"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">value</span>=<span style="color:#ffd500;">"수정"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">onclick</span>=<span style="color:#ffd500;">'location.href="/board/post/${board.bno}"'</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <span style="color:#999999;"><!--삭제버튼--></span></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <<span style="color:#ff3399;">form:form</span> <span style="color:#a8ff58;">action</span>=<span style="color:#ffd500;">"/board/post/${board.bno}"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">method</span>=<span style="color:#ffd500;">"DELETE"</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> <<span style="color:#ff3399;">input</span> <span style="color:#a8ff58;">type</span>=<span style="color:#ffd500;">"submit"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">value</span>=<span style="color:#ffd500;">"삭제"</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"> </<span style="color:#ff3399;">form</span>></div> <div style="padding:0px 6px;white-space:pre;line-height:130%;"></<span style="color:#ff3399;">div</span>></div></div> <div style="text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f;text-decoration:none;">Colored by Color Scripter</a></div></td> <td style="vertical-align:bottom;padding:0px 2px 4px 0px;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:#FFFFFF;"><span style="font-size:9px;background-color:#4f4f4f;padding:1px;">cs</span></a></td></tr></tbody></table></div></div> <div><div class="colorscripter-code" style="color:#f0f0f0;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;"><br></div></div> <div><br></div> <div><font size="3">HiddenHttpMethodFilter를 설정하고 jsp에서 <form:form>태그의 method가 DELETE 또는 PUT인 경우 hidden타입의 <input>태그가 추가로 생성된다고 하네요.</font></div> <div><table class="colorscripter-code-table" cellspacing="0" cellpadding="0" style="font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;margin:0px;padding:0px;border:none;background-color:#272727;"><tbody><tr><td style="padding:6px;border-right:2px solid rgb(79,79,79);"> <div style="margin:0px;padding:0px;text-align:right;color:#aaaaaa;line-height:15.6px;"> <div style="line-height:15.6px;">1</div> <div style="line-height:15.6px;">2</div> <div style="line-height:15.6px;">3</div> <div style="line-height:15.6px;">4</div></div></td> <td style="padding:6px 0px;"> <div style="margin:0px;padding:0px;color:#f0f0f0;line-height:15.6px;"> <div style="padding:0px 6px;white-space:pre;line-height:15.6px;"><<span style="color:#ff3399;">form</span> <span style="color:#a8ff58;">action</span>=<span style="color:#ffd500;">"/board/post/${board.bno}"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">method</span>=<span style="color:#ffd500;">"POST"</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:15.6px;"> <<span style="color:#ff3399;">input</span> <span style="color:#a8ff58;">type</span>=<span style="color:#ffd500;">"hidden"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">name</span>=<span style="color:#ffd500;">"_method"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">value</span>=<span style="color:#ffd500;">"DELETE"</span><span style="color:#a8ff58;"></span>><span style="color:#a8ff58;"></span></div> <div style="padding:0px 6px;white-space:pre;line-height:15.6px;"><span style="color:#a8ff58;"></span> <<span style="color:#ff3399;">input</span> <span style="color:#a8ff58;">type</span>=<span style="color:#ffd500;">"submit"</span><span style="color:#a8ff58;"></span> <span style="color:#a8ff58;">value</span>=<span style="color:#ffd500;">"삭제"</span><span style="color:#a8ff58;"></span>></div> <div style="padding:0px 6px;white-space:pre;line-height:15.6px;"></<span style="color:#ff3399;">form</span>></div></div> <div style="text-align:right;margin-top:-13px;margin-right:5px;font-size:9px;font-style:italic;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f;text-decoration:none;">Colored by Color Scripter</a></div></td> <td style="vertical-align:bottom;padding:0px 2px 4px 0px;"><span style="text-decoration:none;color:#FFFFFF;font-size:9px;background-color:#4f4f4f;padding:1px;"><a target="_blank" href="http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:#FFFFFF;">cs</a><br><br></span></td></tr></tbody></table></div> <div><br></div> <div><font size="3">이런식으로요. 그럼 </font><span style="font-size:medium;">HiddenHttpMethodFilter가 </span><font size="3">요청 파라미터에 _method가 있을경우 _method의 값을 요청 방식으로 사용할 수 있게 해주는 기능이라고 합니다.</font></div> <div><font size="3">브라우저에서 어떻게 put 방식이나 delete방식으로 요청을 하는가에 대해 알게되고 설정과 사용 또한 간편해서 매우 기쁘긴한데 </font></div> <div><font size="3"><form:form>태그를 매번 써줘야 하는건가 싶네요 ㅜㅜㅜㅜㅜㅜ 아니면 @RequestMapping의 consumes를 이용해서 요청헤더가 application/json 인 경우에만 처리를 하게끔 해야하는건지...</font></div> <div><font size="3"><br></font></div> <div><font size="3">혹시 스프링으로 rest서비스 구현해보신분 계시면 조언 부탁드립니다 ㅜㅜ</font></div> <div><div class="colorscripter-code" style="color:#f0f0f0;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;"><br><br></div></div> <div class="colorscripter-code" style="color:#f0f0f0;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;">dlfjsd</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.