[java] JSP에서의 MVC 아키텍처 적용 방법

웹 개발에서 MVC (Model-View-Controller) 아키텍처는 코드의 구조화와 유지보수성을 높이기 위해 매우 중요합니다. JSP (Java Server Pages) 역시 이 아키텍처를 적용하여 개발할 수 있습니다. 이번 글에서는 JSP에서 MVC 아키텍처를 적용하는 방법에 대해 알아보겠습니다.

1. 모델 (Model) 클래스 작성

모델 클래스는 비즈니스 로직을 처리하는 부분으로, 데이터를 처리하고 저장합니다. 이 클래스는 JavaBeans의 규칙을 따라야 합니다. 필요에 따라 데이터베이스 연동이나 파일 입출력 등을 처리할 수 있습니다.

public class UserModel {
  private String username;
  private String password;
  
  // Getters and setters
  
  public void saveUser() {
    // 유저 저장 로직
  }
}

2. 뷰 (View) 작성

뷰는 클라이언트에게 데이터를 표시하는 역할을 합니다. JSP에서는 HTML 코드 내에 Java 코드를 삽입하여 원하는 데이터를 동적으로 생성할 수 있습니다. 예를 들어, 아래의 코드는 사용자의 이름을 표시합니다.

<html>
<body>
  <h1>Welcome <%= request.getAttribute("username") %>!</h1>
</body>
</html>

3. 컨트롤러 (Controller) 작성

컨트롤러는 사용자의 요청을 받아 해당 요청을 처리한 후, 결과 데이터를 모델과 뷰에 전달하는 역할을 합니다. 이를 위해 JSP 내에서 Java 코드 또는 서블릿을 사용할 수 있습니다. 예를 들어, 아래의 코드는 사용자의 데이터를 처리하고 뷰에 전달합니다.

<%@ page import="com.example.UserModel" %>
<%
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  
  UserModel userModel = new UserModel();
  userModel.setUsername(username);
  userModel.setPassword(password);
  userModel.saveUser();
  
  request.setAttribute("username", username);
  request.getRequestDispatcher("welcome.jsp").forward(request, response);
%>

4. 요청과 응답 관리

클라이언트의 요청을 받고 응답을 전송하기 위해서는 web.xml 파일에 매핑을 설정해야 합니다. 예를 들어, 아래의 코드는 사용자가 “/register” URL로 요청을 보내면 “register.jsp”로 연결합니다.

<servlet>
  <servlet-name>register</servlet-name>
  <jsp-file>/register.jsp</jsp-file>
</servlet>
<servlet-mapping>
  <servlet-name>register</servlet-name>
  <url-pattern>/register</url-pattern>
</servlet-mapping>

결론

JSP에서 MVC 아키텍처를 적용하는 방법을 살펴보았습니다. 모델은 비즈니스 로직을 처리하고 데이터를 저장하며, 뷰는 데이터를 표시하고 컨트롤러는 요청을 처리하여 결과를 모델과 뷰에 전달합니다. 이를 통해 웹 애플리케이션의 구조를 명확히 분리하여 유지보수성과 확장성을 개선할 수 있습니다.

참고자료: