본문 바로가기

IT for developer/Spring

나도 한번 써봐야지 스프링 - 2



Template 예제를 살펴보자.

HomeController.java  

package sample.mvc.first;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;


/**

 * Handles requests for the application home page.

 */

@Controller

public class HomeController {


private static final Logger logger = LoggerFactory.getLogger(HomeController.class);


/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value="/", method=RequestMethod.GET)

public String home() {

logger.info("Welcome home!");

return "home";

}

}



클래스이름에서도 알수 있듯이 MVC 구조에서 Controller 기능을 수행하는 클래스이다. 즉, 웹 요청을 받아서 비즈니스로직에 넘겨주는 역할을 하는 클래스이다. 

사용자로부터 받는 요청은 URL 로 구분될 것이고 이를 처리하는 루틴과 매핑해주면 되겠다. 우선 이러한 처리를 할 수 있는 클래스임을 알리는 @Controller라는 에노테이션을 사용해야 한다.

@Controller에서는 컨트롤러 역할을 담당하는 메소드의 파라미터 개수와 타입, 리턴타입 등을 자유롭게 결정할 수 있다. (in toby spring 3.0)

컨트롤러 역할을 담당하는 메소드를 정의하는 방법은 @RequestMapping 에노테이션 사용하는 것이다.

@RequestMapping(value="/", method=RequestMethod.GET)
public String home() {

 위 코드는 HTTP GET 메소드로 Root 컨텍스트를 요청하면 home이라는 메소드로 연결해달라고 정의하고 있다. 


마지막으로 특정 값을 리턴하는데 이는 최종사용자에게 전달될 View를 결정하게된다.

return "home"

최종 사용자에게 home.jsp  결과페이지를 전달하게된다.

이는 servlet-context.xml 에 다음과 같은 ViewResolver 빈을 등록하여 가능해진다.

뷰 리졸버는 핸들러 매핑이 URL로 부터 컨트롤러를 찾아주는 것처럼, 뷰 이름으로 부터 사용할 뷰 오브젝트를 찾아준다. InternalResourceViewResolver는 뷰 리졸버를 지정하지 않았을 때 자동등록되는 디폴트 뷰 리졸버다. 주로 JSP를 뷰로 사용하고자 할 때 쓰인다.  (in toby spring 3.0)

<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>