Spring〃Dispatcher Servlet / HandlerMapping 설정

반응형


MVC 패턴 흐름을 정리하면서 새로운 용어인 DispatcherServlet이라는게 새로 튀어나왔죠? 바로 저번글에서 한번에 정리할까 하다가 그냥 따로 하나의 주제로 정리하는게 낫다 싶어서 게시글을 분리했습니다.



먼저 사전적 의미로 Dispatcher는 분배하다, 배치하다, 보급하다등의 뜻을 가지고 있으니 DispatcherServlet이라 함은 서블릿을 배치하고 분배하고 보급하는 기능을 담당하고 있겠네요. 앞으로 이 글에서 눈의 피로도를 피하기 위해 디스패쳐서블릿이라 부르겠습니다.


디스패쳐 서블릿의 역활은 MVC구조중 가장 중간에 위치하여 웹브라우저에서 요청한 정보를 받아 핸들러매핑에 역활을 분배하고, 컨트롤러에서 보내온 정보를 받아, 뷰리졸버에 전달후, 뷰에서 출력된 화면을 웹에 다시 전송해주는 역활을 합니다. 이해가 필요하신분들은 아래 링크를 눌러 MVC흐름을 한번 보고 오시면 도움이 됩니다.


도움되는 글 → 스프링 MVC 패턴의 흐름


MVC패턴에서 처음과 끝을 담당하고 있으니 그만큼 중요하고 설정을 잘해줘야 겠죠. 흐름은 어렵지만, 설정만큼은 쉽기 때문에 걱정안하셔도 됩니다. 디스패쳐 서블릿은 설정만 잘해줘도 따로 추가작업할 필요가 없어서 아주 좋아요.




DispatcherServlet 설정 (web.xml) 


디스패쳐서블릿은 기본적으로 WEB-INF폴더안의 web.xml파일에서 설정합니다. 빨간색 네모칸으로 적은 부분을 추가해주시면 되고 <servlet-name>은 각자 이름을 지어주시면 됩니다. 


저는 게시판을 만들기 위한 서블릿을 만드는 것이라 board로 설정해 주었고 <url-pattern>에는 .htm / .bo / .action등으로 다음 board-servlet.xml파일에서 컨트롤러로 핸들러매핑할 url구성을 적어주시면 되겠습니다.  


마지막으로 파란색 네모칸은 디스패쳐서블릿을 여러개 설정을 하기위해 공통적으로 Context Loader Listener를 설정하기 위한 <Listener>태그입니다. 이 태그를 만들어 주었다면 apllicationContext.xml파일에서 context를 추가로 설정해야하니 다음 제목으로 넘어가겠습니다.




 context설정 (applicationContext.xml)


디스패쳐서블릿 설정이 이리저리 왔다갔다해서 어지럽지만 저랑 같이 순서만 잘따라오시면 됩니다. 아까 web.xml에서 <listener>설정을 위해 context를 설정해주었으니 이번엔 applicationContext.xml에 가셔서 첫번째 빨간네모칸을 먼저 스키마에 추가합니다.


다음 <context:component-scan>으로 시작하는 태그로 기본패키지(base-package)를 컨트롤러로 연결시켜 주면 되겠습니다. 마지막으로 컨트롤러에 연결시킬 핸들러매핑까지만 설정하고, 다음 단계인 컨트롤러 작성에 대한것은 다음글에서 이어 작성하도록 할게요.




 HandlerMapping 설정 (board-servlet.xml)



처음 web.xml에서 디스패쳐서블릿을 설정할때 *.action으로 url으로 매핑한것을 기억하시나요? 이 매핑한것들이 board-servel.xml파일에 설정해둔 핸들러매핑을 통해 컨트롤러로 바로 연결이 된답니다.  


정리하자면 web.xml(*.action) → board-servlet.xml(HandlerMapping) → Controller 의 순서로 움직입니다. 여기서 <props>는 DI기능의 태그로 /boardList.action을 만나면 listController로 연결한다는 역활을 가지고 있습니다. DI기능은 아래 정리해둔 링크로 살짝 보시고 오셔도 좋아요. 


도움되는글 → <property>와 <props>에 대해 살펴보고 오기


열결받은 listController는 ListController.java 이름으로된 자바파일로 연결되고 /boardRead.action으로 전달받은 readController는 ReadController.java로 연결되는거죠. 자세한 <props>태그는 나중에 시간이 생기면 따로 정리하도록 하겠습니다. 공부해야될게 한두가지가 아니라 시간이 촉박해서 하나하나 전부 설명할수가 없네요.


이 3가지 절차를 전부 다 해주면 초반에 디스패쳐 서블릿에 대한 설정은 전부 끝났는데요. 뷰리졸버와 DI기능과 DB기능만 추가해주면 모든 설정이 끝나게 됩니다. 추가되는 설정은 게시판을 만들어 가면서 따로 포스팅할 예정입니다.

반응형