프로그램/spring

spring3 mvc - 2

mulderu 2011. 8. 5. 01:17

이번 포스트는 vmware spring tools suits IDE 를 이용하여 아주 간단히 mvc 를 설정 해 보겠습니다.
직접 다운로드 후 빌드 해 보시면, 아 이런 꼼수가 있었군 ... 하실 것 같군요. (요즘 나는 꼼수다 듣는 재미가 쏠쏠해서~~~)


[작성중]

1. 미리할일 및 vmware 와 spring 에 대하여
현재 spring 은 vmware 사에 들어가 있습니다. (인수된거죠)
그런 뒤로 여러가지 파생 작업이 이루어 지고 있습니다. vmware가 어떤 회사 인가요???
가상머신을 만드는 회사 ???
아니지..요.
vmware 사는 이미 cloude 플랫폼 회사로 이동한지 오래입니다. 
vmware 사가 현재 인수 합병하는 회사를 본다면 모두 서비스기반 솔루션 회사 들 입니다. 
 - zimbra/ socialcast / springframework/ sliderocket .... 생각보다 굵직한 서비스가 모두
vmware사의 품에 들어 갔죠...
즉 자신들의 가상머신을 클라우드 인프라로 활용하고 그위에 클라우드서비스를 여러거 올려서 나중에는 구글이나 ms,apple등이 원하는 클라우드 플랫폼종합상사가 되고자 하는것 같습니다... 

다시 spring 으로 돌아 온다면, spring homepage 에 가보시면 상당히 많은 파생상품???? 
들이 있습니다. 왜 그럴까요 ??? 앞으로 spring은 vmware cloude 플랫폼의 중심
미들웨어로 발전할 것 같습니다.... (제생각에 동의 하신다면.. 같단한 코멘트...다시는 센스를 발위해 주세요 ^^)

그중 spring tool suites , vFavric tc server 등....... 이 우리의 관심입니다.

그리고 우리는 sts (http://www.springsource.com/developer/sts)  를 다운로드 하여 사용합니다. 현재 알려진 spring ide 중 가장 좋다고 생각 합니다.

2. spring3 mvc project make step
일단 sts 를 다운로드 하신후 설치하시면 작업의 50%로는 완료 되신겁니다.
그만큼 sts tool로 처리 되는 선작업이 많다는 의미 입니다.

대충의 작업순서는
   1) sts 로 Spring MVC Project 를 생성하기
   2) web.xml 및 servlet.xml 에 수정할게 있으면 수정하기 (기본 모드에서는 수정할게 없습니다)
       추가 servlet 이나 추가 plugin 등이 필요한경우 수정하시면 됩니다.
      그리고 sts 의 빌드는  maven 을 이용하고 있습니다.
      추가 jar dependency가 있다면   maven pom.xml 에 dependency 를 추가 합니다.
  3)  src 폴더에서  controller  package 이하에 원하는 controller를 추가 및 수정 합니다.
  4) 테스트 관련 코드를 작성합니다.
  5) tomcat 은 따로 설치 할 필요가 없습니다.
      sts 안에  tomcat7을 임베딩한 vFarvric ts server 가 들어 있습니다. 여기에 현재 프로젝트를 추가하여
     was  상에서 코드를 테스트 할 수 있습니다.







3. 대부분 기본설정으로 mvc 페이지를 바로 만들 수 있습니다.
   기본 설정을 하나 본다면
   아래와 같이 resolver를 선택하고 prefix, suffix 등을 결정하면 아주 쉽다.

 
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>


4. controller 만들기
   기본적으로 HomeController 가 하나 생기죠, 이놈을 쉽게 copy 하여 자신의 controller로 만드시면 쉽니다.
   새로운 controller 를 만들때는 @controller annotation 을 사용하여 처리 하면 xml 처리를 하지 않고 
   추가 가능 합니다.

   아래의 그림과 같이 annotation 으로 처리 합니다. 
   @Controller                                  : 이거 하나로 spring 에서 controller 로 검색 됩니다. *.*
   @RequestMapping(value="/json")   : request url pattern  /contextname/json

   


위와 같이 하면 /context-name/json 호출하면 view 는 /WEB-INF/views/json/readyForm.jsp로 넘어 갑니다.



5.  json output

    5.1.  object 를  return 해 주는 방법  

    spring 에서는 기본적으로 request type 이 application/json 이면 output 을 json 으로
    넘겨주는 부분이 포함 되어 있습니다.
    (jacksonjson 을 검색 해 보기 바랍니다.)  

   annotation : @ResponseBody  를 빼먹지 마세요 !
 

 maven dependency  를 아래와 같이 추가 해 주세요.

<!-- Jackson JSON Mapper -->

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId>

<version>1.8.0</version>

</dependency>


 

  





 위와 같이 controller 안에서 TestRock 이라는 빈을 만들고 적절히 채워준후 리턴해 주면 됩니다... ^^

5.2. model object 와   ContentNegotiatingViewResolver  를 이용하는 방법


호출하는  URL 을 .json, .xml, .html  등의 확장자로 호출 하면 model의 object 를  json이나 xml로 리턴 해 주는 방법

- servlet-context.xml 에 아래의 resolver  추가


	
		
			
				
				
				
			
		
		
			
				
				
			
		
	



- 호출 URL pattern

  • 일반 jsp forwarding view call : context-name/read
  • json view call : conext-name/read.json
  • xml view call : context-name/read.xml


@RequestMapping(value = "/read", method =
        { RequestMethod.GET, RequestMethod.POST })
    public String readAddress(@ModelAttribute Address address, BindingResult result,
        @RequestParam(required = false) Session session, Model model) throws Exception
    {
        model.addAttribute(addressService.readAddress(address.getAddressId()));

        logger.debug("[readAddress:END] " + model.toString());
        return "/address/read";
    }