2009/03/27 19:55

Spring MVC

휴 이게 얼마만의 포스팅인지 ㅡㅡ; 모 방문하는 사람도 없지만 ㅋㅋ
조금 늦은감이 있긴하지만 지금은 몰겠지만 아직 자바 1.4 기준인곳도 많아서 스프링 2.0 으로 참고했습니다.
라이브러리를 추가해서 하면 가능하다고는 하지만 그냥 2.0기준으로 마쳐서 사용해봤습니다.

보통 스트러츠 웹 프레임워크와 스프링 조합으로 많이 써본지라 스프링 MVC도 한번 사용해 봤습니다.
아래 그림은 어디서 퍼온건데 ㅡㅡ;;; 암튼
대략 스프링 MVC 구조를 보면 Struts와 크게 다르지 않습니다.
특별히 설명을 따로 하지 않아도 아실꺼라 믿습니다 ㅋㅋ





web.xml 
아래의 적색부분이 없으면 기본적으로
servlet-name 인 duronex-servlet.xml 파일을 참조합니다.

web.xml 보기


그럼 duronex-servlet.xml 파일을 보면
먼저 viewResolver 인데 나중에 컨트롤러(스트러츠에서의 액션) 에서 /WEB-INF/view/ + 뷰네임 +  .jsp
이런식으로 제어하게 됩니다.

handlerMapping 말 그대로 수행을 어느 컨트롤러가 하게 될지 지정을 하는 역할 입니다.
예를들어 URL이 /board/board.do로 넘어 왔을 경우 boardController에 지정된 컨트롤러를 수행을 하게 되는 것 이지요.

defaultMethodNameResolver는 매소드 형식을 지정하는 리졸버 입니다.
예를들어 매소드 이름이 cmd 이고 기본 매소드는 list 라고 했으니
"/board/board.do" 이런식으로 넘어온 경우에는 /board/board.do?cmd=list 와 같다고 보시면 됩니다.


duronex-servlet.xml 보기


이제 컨트롤러를 요청된 URL을 통해 수행하게될 Controller를 만들어 봅시다.
인터셉터에 대해서는 추후 다룰 예정입니다 ㅡㅡ;; 기본적인 사항들만 일단 적고.ㅋㅋ

원칙을 따지면 각 해당하는 페이지에 맞게 컨트롤러를 사용하는게 맞겠지만, 무조건 다중액션을 상속 받게 하려고 구성했습니다.
빈 껍데기인 DefaultController 는 MultiActionController를 상속받아서 쓰고
모든 작성된 컨트롤러는  DefaultController 를 상속 받아서 사용하도록 한거죠.
이게 올바르다고는 할수없지만 흠..

아래의 DefaultController 보면(적색부분은 일단 무시) 빈 껍데기 입니다.

DefaultController 보기


흔히 VO(Value Object) 와 TO(Transer Object) 라고 사용하는데 스프링 프레임워크에서 제공하는 샘플을 보면
Domain객체라고 지정하는거 같다.
View에서 받아서 쓸 VO SQL문 던질때 쓸 TO 따로 만들어야하는건지??
Domain 객체의 틀린점은 getter 와 setter 를 제외한 맴버변수에 해당하는 것을 이용한 매소드 까지 포함하는거 같다.

Domain 객체의 예는 setter getter라고 보심 되니 그냥 패스 ㅋㅋ

이제 수행작업을 하게될 BoardController를 만들면 아래와 같이 구성됩니다.
위에서 duronex-servlet.xml 에 대한 예제중 적색으로 표시한 부분중에 보면 설명을 생략하였는데
어떠한 컨트롤러를 수행할때 해당 property 중에 이름이 formViewList와 formViewWrite 가 setter 에 의해 저장 되어 집니다.

그리고 cmd=list, cmd=write 일때 수행할 매소드가 있고요.
스트러츠를 해본 사람이라면 쉽게 적응 할수 있을 껍니다 ㅋㅋ.

그리고 스트러츠의 setAttribute처럼 addObject로 사용되어 집니다.
Board command 여기서는 Board 가 위에 언급한 Domain 객체라고 보시면되고 지정된 이름에 넘어온 파라미터가
자동으로 바인딩 되어 집니다.

BoardController 보기


mav.setViewName(getFormViewWrite()); 대신에 mav.setViewName("board/list"); 이렇게 지정을 해줘도 되는데
여기서 XML에서 주소를 관리하는 내가 모를수도 있지만 저렇게 getter setter 를 만들어서 사용될 XML에서의 경로 관리외의 이점이 있는지 궁금하다.

Struts2는 넘어온 파라미터를 getter setter를 하지만 ㅋㅋ

이렇게해서 /WEB-INF/view/board/list.jsp 파일이 보여지게 된다.
여기서 빠진 Validator 부분은 다음 기회에 ㅡㅡ;;





저작자 표시
Trackback 0 Comment 0