ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring]스프링 MVC 기초(구조)
    프로그래밍 언어/Spring 2019. 8. 1. 00:56

    오랜만에 스프링 MVC를 공부했는데 다 까먹어서 오늘 공부한 기본적인 개념만 정리해보려 합니당


    첫 번째로 스프링 MVC 프로젝트의 기본적인 구조입니다.


    중요한 부분은 servlet-context.xml web.xml 파일입니다.


    servlet-context.xml 파일은 resources 설정과 viewResolver를 설정하고,

    프로젝트에 필요한 빈 객체를 생성하는 스프링 컨테이너입니다.


    web.xml 파일은 DispatcherServlet을 등록하고 매핑을 해주는 웹 설정 파일입니다.


    다음은 Controller 영역입니다.

    Controller는 사용자의 요청을 실제로 처리하는 영역이라고 생각하시면 됩니다.

    값을 가지고 view로 가서 실제 사용자들에게 출력을 해주는 역할을 하는 곳입니다.


    위 코드는 Controller 예제 코드입니다.

    @Controller 어노테이션을 써줘서 이 클래스를 컨트롤러로 쓰겠다고 설정을 했고,

    @RequestMapping 어노테이션을 써서 "/login" 이라는 요청이 발생하면 login() 메서드를 실행하게 됩니다.

    model객체에 값을 담아서 login.jsp로 반환해주는 코드입니다.

    return "login" 이라고 작성한 이유는 servlet-context.xml에서  

    ViewResolver로 설정을 해줬기 때문에 login.jsp로 인식해서 이동하게 됩니다.



    다음 예제는 서비스 객체와 Dao 객체를 사용한 프로젝트입니다.

    프로젝트가 동작하는 구조는 대략 알게 되었기 때문에 두번째 예제에서는 어노테이션을 중심으로 정리해보려 합니다^^


    <MemberController.java> 파일입니다.

    클래스명 위에 @Controller를 써줘서 컨트롤러로 사용하겠다고 정의를 해놨고,

    @RequestMapping을 사용해서 View로 넘어갈 수 있도록 설정해놨습니다.

    그리고 이 코드에선 @Autowired를 사용해서 MemberService 객체를 자동주입하고 있습니다.

    어디서 어떤 방법으로 생성된 객체인지 바로 다음 코드에서 확인해 보겠습니다^^



    <MemberService.java> 파일입니다.

    <MemberService.java> 파일에서 어노테이션을 통해서 MemberService 객체를 생성하고 있습니다.

    @Service, @Component, @Repository 3가지 어노테이션을 통해 객체를 생성할 수 있고, 

    자동으로 스프링 컨테이너에 객체를 생성해주는 어노테이션입니다.

    (xml파일에 <bean id="이름" class="경로"/>을 따로 지정하지 않아도 되서 코드가 간결해짐! 매우 중요!) 

    모두 같은 의미는 가지는 어노테이션입니다. 

    아래 코드는 서비스 객체이기 때문에 @Service를 사용해서 객체를 생성해볼게요.ㅎㅎ

    객체를 생성하면 컨트롤러에서 @Autowired를 통해 어디서나 값을 주입받을 수 있습니다!!

    <MemberService.java>에서도 @Autowired를 사용해서 dao객체를 주입받고 있네영




    <MemberDao.java>  파일은 @Component를 통해서 객체를 생성했네여ㅎㅎ

    <MemberService.java> 코드를 보면 @Autowired를 사용해서 생성한 객체를 주입받는 걸 확인할 수 있습니다.ㅎㅎ!


    오늘은 진짜 간단하게 스프링 MVC 프로젝트 구조와 어노테이션에 대해서 정리했습니다.

    오랜만에 보는 거라 처음에는 많이 헤맸는데 보다보니까 기억이 조금씩 나서 다행이네여ㅎㅎㅎ

    이번엔 잊어버리지 않게 정리해두고 계속 보려고 포스팅했습니다. 열공하세영 😊

    댓글 0

Designed by Tistory.