기록저장 블로그

스프링(Spring) - (3) Spring4 Controller 맵핑하기 본문

코딩/스프링(Spring)

스프링(Spring) - (3) Spring4 Controller 맵핑하기

코딩하는 히라미 2017. 7. 1. 14:32
스프링에서 거의 사용자가 입력받은 부분들은 Controller 에서 작동한다.
따라서, 컨트롤러에서 맵핑한 주소로 접속하면 메소드에서 선언한 작업이 작동이된다.

지금부터 컨트롤러 주소 맵핑하는법을 알아보겠습니다.

  1. 다음 코드는 스프링 프로젝트 처음 생성시 기본으로 생성되는 컨트롤러 소스이다.

@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(Locale locale, Model model) {
          logger.info("Welcome home! The client locale is {}.", locale);

          Date date = new Date();
          DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

          String formattedDate = dateFormat.format(date);

          model.addAttribute("serverTime", formattedDate );

          return "home";
     }

}

이 코드를 보면 클래스 앞에 @Controller 어노테이션을 붙여주므로서 스프링에서 컨트롤러 클래스로 인식을 한다.

코드를 차근차근 해석을 해보면

public String home(Locale locale, Model model) {

}

home 이란 home 메소드 이름으로 컨트롤러를 정의해준것이다.
가로 안부분은 자바 메소드와 같이 변수, 클래스등을 정의해 불러와 사용할수 있다.

메소드 안에는 주소 호출시 실행되는 부분이므로, 원하는 것을 자바로 코딩해주면된다.

  1. 다음은 @RequestMapping 어노테이션은 이 글의 핵심인 주소 맵핑에 필요한 어노테이션이다.

여기서 value 부분에 /test 를 적으면 주소는 http://localhost/test로 된다.
주소 커스텀도 가능하다. ex) /test.go

그리고 @PathVariable 이 어노테이션을 이용하면 파라미터형식의 url 도 맵핑이 가능하다.

예제 소스

@RequestMapping(value = "/board/{param}", method = RequestMethod.GET)
public String board(@PathVariable("param") String param) {
    
     System.out.println("요청 : " + param);
     
     return "board";
}

이런식으로 주소를 맵핑하면 /board/notice 와 같은 주소로 맵핑을 할수가 있다. 
어노테이션 앞에 변수를 사용해 데이터베이스에서 요청하거나, 파라미터 요청에 사용할수 있다. 

이런식으로 맵핑하면 깔끔한 주소를 만들수 있다.


  1. 다음은 return 부분을 알아보도록한다.

컨트롤러에서 return 부분은 view 호출 방식으로 사용이 된다.
따라서 return "home" 을 하게되면 view 폴더의 home.jsp 파일을 불러오게 된다.

만약 views 폴더에 /board/list.jsp 파일이 있으면 return "/board/list" 로 입력하면된다.

이방식이 아니라도 스프링 플러그인을 이용해 다양한 뷰를 구현이 가능하다.

Comments