Whiteship's Note

스프링 ROO에서 RESTful 코드 보기

모하니?/Coding : 2009.06.09 22:58


vote.roo 예제에서 ChoiceController_Roo_Controller 애스팩트에서 URL 맵핑과 뷰 맵핑 정보를 위주로 살펴보겠습니다.

/choice, POST => create => "choice/create" or "redirect:/choice/" + choice.getId();
/choice/form, GET => createForm => "choice/create"
/choice/{id}, GET => show => "choice/show"
/choice, GET => list => "choice/list"
PUT => update => "choice/update" or "redirect:/choice/" + choice.getId();
/choice/{id}/form, GET => updateForm => "choice/update"
/choice/{id}, DELETE => delete => "redirect:/choice"

이 정보들이 개인적으로 제일 궁금했었기 때문에, 이렇게 간추려서 정리해봤습니다. 이 정보들을 보다가 뷰에서 요청을 보내는 방법이 궁금했습니다. 흠.. GET은 알겠고, POST는 폼에서 보냈을 테고 DELETE는 어케 보냈을까나... 하면서 /choice/list.jsp 파일을 열어 보았습니다.

                    <td>
                        <form:form action="/vote/choice/${choice.id}" method="GET">
                            <input alt="Show choice" src="/vote/static/images/show.png" title="Show choice" type="image" value="Show choice"/>
                        </form:form>
                    </td>
                    <td>
                        <form:form action="/vote/choice/${choice.id}/form" method="GET">
                            <input alt="Update choice" src="/vote/static/images/update.png" title="Update choice" type="image" value="Update choice"/>
                        </form:form>
                    </td>
                    <td>
                        <form:form action="/vote/choice/${choice.id}" method="DELETE">
                            <input alt="Delete choice" src="/vote/static/images/delete.png" title="Delete choice" type="image" value="Delete choice"/>
                        </form:form>
                    </td>

헛 글쿠나.. 걍 폼에서 method를 명시해 줬구나.. @_@ 설정은 별로도 해줘야 할 거 없으려나..하고 web.xml과 vote-servlet.xml을 살펴봤지만 별다른 건 없더군요 아.. web.xml에 urlrewriter 필터를 적용했던데 스프링에서 사용하는 녀석이니 한 번 봐봐야겠습니다.

org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

vote-servlet.xml에 있던 설정은 간단했습니다. internalResourceViewResolver에 prefix suffix 줘서 뷰이름으로 jsp 뷰 찾아가도록 빈을 등록했고, 파일 업로드를 하는지 머티파트 머시기 빈을 하나 등록했고, 발생한 예외에 따라 보여줄 뷰 이름을 등록한 예외처리뷰도 보이고 컴포넌트 스캔까지 네 개가 명시적으로 등록되어 있습니다.

REST 적용 간단해 보이네요~

참고자료: RESTful한 웹 서비스 만들기
top




: 1 : ··· : 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 : ··· : 299 :