본문 바로가기
IT/spring

스프링 Model 1 아키텍처 구조

by 뉴코딩맨 2023. 6. 23.
스프링의 Model 1 아키텍처는 초기에 사용되었던 웹 애플리케이션 아키텍처 중 하나입니다. 스프링 Model 1 아키텍처의 구조에 대해 알아보고, 예시를 통해 설명하겠습니다.
 
 

구조

스프링 Model 1 아키텍처는 다음과 같은 구조로 이루어져 있습니다.
  1. JSP(JavaServer Pages): JSP는 웹 페이지를 동적으로 생성하기 위한 템플릿 엔진입니다. JSP는 HTML 코드에 Java 코드를 삽입하여 동적인 콘텐츠를 생성할 수 있습니다. 뷰와 컨트롤러 역할을 동시에 수행합니다.
  2. 서블릿(Servlet): 서블릿은 웹 애플리케이션 서버에서 실행되는 Java 클래스로, 클라이언트의 요청을 처리하고 응답을 생성하는 역할을 담당합니다. 서블릿은 컨트롤러 역할을 수행합니다.
  3. 웹 컨테이너(Web Container): 웹 컨테이너는 서블릿의 실행 환경을 제공하며, 클라이언트의 요청을 받아 서블릿을 실행하고 그 결과를 클라이언트에게 반환합니다. 대표적인 웹 컨테이너로는 Apache Tomcat이 있습니다.
  4. 모델(Model): 데이터를 표현하는 객체로, 비즈니스 로직의 결과물이나 데이터베이스로부터 조회한 데이터 등을 담을 수 있습니다. 모델은 서블릿에서 생성되고 JSP에서 사용됩니다.
 
 

예시 설명

다음은 스프링 Model 1 아키텍처의 예시입니다.
@WebServlet("/users")
public class UserServlet extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        UserService userService = new UserService();
        List<User> userList = userService.getUserList();
        
        request.setAttribute("users", userList);
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/user.jsp");
        dispatcher.forward(request, response);
    }
}
위의 예시에서는 UserServlet이라는 서블릿을 정의하고 있습니다. /users 경로에 대한 요청을 처리하며, UserService를 사용하여 사용자 목록을 조회합니다. 조회된 사용자 목록을 모델에 추가한 후, RequestDispatcher를 통해 /WEB-INF/views/user.jsp로 포워딩합니다.
 
user.jsp 파일에서는 모델로부터 전달받은 사용자 목록을 사용하여 동적으로 HTML을 생성합니다. 이를 통해 클라이언트에게 사용자 목록을 표시할 수 있습니다.
 
 

결론

스프링 Model 1 아키텍처는 JSP와 서블릿을 활용하여 웹 애플리케이션을 구성하는 전통적인 방식입니다. JSP는 뷰와 컨트롤러 역할을 동시에 수행하며, 서블릿은 컨트롤러 역할을 수행합니다. 모델은 데이터를 담는 객체로서 비즈니스 로직의 결과물이나 데이터베이스 조회 결과를 담을 수 있습니다.
 
스프링 Model 1 아키텍처는 간단하고 직관적인 구조를 가지고 있으나, 유지보수가 어려울 수 있고 확장성이 제한적일 수 있습니다. 따라서 대규모 프로젝트나 복잡한 비즈니스 로직을 다룰 때는 스프링 MVC와 같은 다른 아키텍처를 고려하는 것이 좋습니다.
 

'IT > spring' 카테고리의 다른 글

스프링 HandlerMapping 클래스  (0) 2023.06.27
스프링 Model 2 아키텍처  (0) 2023.06.26
스프링 MVC 구조  (0) 2023.06.23
스프링 트랜잭션 어드바이스 설정하기  (0) 2023.06.23
스프링 트랜잭션 관리자 등록하기  (0) 2023.06.23

댓글