오늘도 배우자!

귀찮음에 배움을 멀리하지 않기를...

Develop/Server

SpringBoot Controller, Service, DAO 이해 - Controller(1)

리다양 2018. 2. 27. 10:06

오랜만에 찾아왔습니다~!!!

기다리신 분들은 없겠지만...

 

이번에는 Spring에 관한 내용을 다뤄 볼껀데요~!!

Spring은 국내 회사에서 대부분 사용 할 정도로 기본적인 보안이나 성능이 뛰어나기 때문에

익혀두시면 나중에 매우매우매우 좋다는 점 꼭 기억해두시고!!

 

이제 출발해 볼까요??

 

1. 개념

 

 

Spring은 자바 플랫폼을 위한 프레임 워크 입니다.

실제 이름은 Spring Framework 이지만 간단하게 슾흐링... Spring으로 부르죠~!!

 

개념은 짧게하고 도대체 스프링을 구성하고 있는 세녀석들이 어떤 역할을 하는지

궁금하실텐데요 바로 진행하도록 하겠습니다.

 

2. Controller

 

Controller는 사용자(Client)의 요청(Request)을 어떻게 처리 할 지(Handling) 결정하는 녀석입니다.

이렇게만 말하면 이해가 힘드실 수 있으니 소스코드를 보면서 이야기하도록 하죠!!!

 

 @Controller 
   public class ExampleController {
     @RequestMapping(value = "/hello", method = RequestMethod.GET)
     public String hello(ModelMap modelMap){ 
        return "/example/hello"; 
     }
 } 
 
위와 같이 코드를 작성 할 수 있는데요.
이제 각각의 의미를 알아보도록 하겠습니다.
 
Annotation : @Controller
Controller의 역할을 수행한다고 명시해주는 어노테이션 입니다.
Client의 Request가 서버에 도착했을 때 Controller에 정의 된 기준대로 요청을 처리하게 되는데요
이를 위해 @Controller 라는 어노테이션을 명시하여 이녀석이 컨트롤러이며 요청이 들어오면
이녀석의 내용을 기준 삼아 요청을 처리하라는 말 입니다.
 
Annotation : @RequestMapping
요청이 Controller에 들어오게되면 Client의 Request를 처리하는 기준점들 입니다.
위의 코드에서 @RequestMapping(value = "/hello", method = RequestMethod.GET) 이라고 명시되어 있는데요 서버의 BASE_URL이 http://ysjleader.com 이라고 가정하겠습니다.
 
사용자가 http://ysjleader.com/hello 라고 주소창에 검색을 하게되면
@RequestMapping(value = "/hello", method = RequestMethod.GET) 이녀석으로 매핑되게 됩니다.
"/hello"라는 것은 상대경로로써 BASE_URL + "/hello"가 됩니다.
 
그리고 Client는 주소창에 http://ysjleader.com/hello 라고 입력 후 엔터만 쳤으므로
Http Request Method는 GET 이 되겠죠
 
따라서 Spring 내부에서 사용자 요청을 Controller가 가져와 Request Mapping을 시행하게 됩니다.
 
Return Value : return "/example/hello"
여기 return "/example/hello" 요거 리턴 값이 뭔가 경로같지 않나요???
그렇습니다아~!!!!! 역시 똑똑하시군여 이 리턴값은 Client의 Request를 처리하고 사용자에게
어떤 page를 리턴할지 결정하게됩니다.
 
여기서 질문 그러면 example 디렉토리 밑에 hello.jsp와 같은 파일이 있는걸까요???
그렇습니다아~!!!! 역시 똑똑.... 맞습니다.
저의 경우에는 WEB-INF/jsp/example/hello.jsp가 있어요
dispatcher-servlet.xml에 ViewResolver prefix를 "/WEB-INF/jsp/" 로 지정해놔서
"/example/hello"만해도 자동적으로 /WEB-INF/jsp/example/hello.jsp로 매핑 된것이죠~!!!
이거에 관련해서는 또 나중에 상세히 다루도록 하겠습니다!!!
 
 
Parameter : ModelMap modelMap
이녀석은 return 과 매우 밀접한 관계가 있는데요.
Client Request를 수행하고 다음 페이지 즉 현재 소스코드에서는 hello.jsp를 리턴하면서
해당 hello.jsp 페이지에 전달해야 할 내용이 있을 경우
modelMap에 담아서 보내게 됩니다.
 
이는 GET / POST로 값 전달하기에 관해 다루면서 이야기 하도록 하겠습니다.
 
자 오늘의 글을 정리해보자면
사용자(Client)로 부터 요청(Request)이 들어옵니다.
그리고 @Controller 라고 명시되어있는 Controller Class가 요청을 전담하여 처리합니다.
처리하는 기준은 @RequestMapping에 정의 되어 있는 기준으로 요청을 매핑해줍니다.
 
오늘의 글에서는 요정도만 알아두고 넘어가도록 하겠습니다.
(너무 달리면 다들 피곤하니까아)