코딩 개발/Java

Model 2 Architecture (MVC)

호소세 2023. 5. 25. 21:59
728x90
반응형

Model2와 Model 1 비교해보면 재밌습니다.

https://pabeba.tistory.com/157

 

Model 1 Architecture

Model1 Architecture 이란? Model 1 은 View와 Model을 모두 JSP 페이지 하나에서 처리하는 구조를 말합니다. Java Bean은 class를 만들어서 로직을 작성해 놓은 것입니다. JSP 역할 client 에게 리스트 또는 입력양

pabeba.tistory.com

Model 2 Architecture 란?

JSP, Servlet, JavaBeans를 사용하여 웹 애플리케이션을 개발하는 아키텍처입니다. 모델 2 아키텍처에서 JSP는 View를 생성하는 데 사용됩니다. Servlet(Controller)은 요청을 처리하고 모델을 조작하는 데 사용됩니다. JavaBeans(Model)는 데이터를 저장하고 관리하는 데 사용됩니다. 모델 2 아키텍처는 개발이 어렵지만 복잡한 웹 애플리케이션을 개발하는 데 적합합니다.

 

모델 2 아키텍처의 장점

  • 복잡한 웹 애플리케이션을 개발하는 데 적합하다.
  • 유지보수가 쉽다.
  • 확장성이 좋다.

모델 2 아키텍처의 단점

  • 개발이 어렵다.
  • 단순한 웹 애플리케이션을 개발하는 데 적합하지 않다.

예시를 보면서 이해해봅시다.

 

예시

1. 브라우저에서 AllMemberCountServlet으로 요청 보내기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Model2 MVC Architecture</title>
</head>
<body>
<h4>Model2 MVC Architecture</h4>
<ul>
	<li><a href="AllMemberCountServlet">회원수 조회</a></li>
</ul>
</body>
</html>

회원수 조회를 누르면 AllMemberCountServlet으로 HTTP 통신이 갑니다. MVC 중 View를 담당합니다.

2. AllMemberCountServlet

/**
 * Model2 MVC Controller 역할 
 */
@WebServlet("/AllMemberCountServlet")
public class AllMemberCountServlet extends HttpServlet {
	private static final long serialVersionUID = 1L; 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			int totalMemberCount=new MemberDAO().getTotalMemberCount();
			//request 객체에 회원수 정보 공유 => View 역할 담당하는 jsp에서 사용하기 위해
			//request 객체는 response 가 완료될 때까지 유효 
			request.setAttribute("totalMemberCount", totalMemberCount);
			//응답 역할을 전담할 view 를 선택해 제어를 이동 
			//forward 이동 방식은 기존 request와 response 객체를 유지하면서 해당 path 의 jsp로 
			//제어 이동 
			request.getRequestDispatcher("all-member-count.jsp").forward(request, response);
		} catch (ClassNotFoundException | SQLException e) {			
			e.printStackTrace();
		}
	}
}

MemberDAO는 저번에 만든 DAO 그대로 입니다. Controller인 Servlet을 통해서 사용자의 요청을 처리하고 모델과 뷰를 조정합니다.

Model(MemberDAO)에서 데이터를 받아와서 request 객체에 totalMemberCount를 저장합니다.

저장 후에 all-member-count.jsp 로 request를 다시 보내줍니다.

3. 다시 브라우저로 나타내기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Model2 MVC</title>
</head>
<body>
<h4>총회원수 <%=request.getAttribute("totalMemberCount") %>명</h4>
</body>
</html>

요청에서 받은 totalMemberCount에 대한 값을 화면에 나타내주면 통신이 끝납니다!

자신이 저장한 member의 수가 나오게 됩니다.

 

소감

아직은 대단한 개발을 하고 있지는 않아서 MVC 모델의 필요성(?)을 느끼지 않지만, 우리 모두 위대한 개발을 할 사람들이기 때문에 미리미리 배워두면 좋다고 생각합니다. 그리고 계속 조금씩 다가가야 지식과 친해질 수 있다고 선생님꼐서도 말씀해주셨고요.

인생에 있어 싫은 것도 좋다좋다 말해야 좋아지는 것처럼 공부도 조금 조금 계속 알아가다 보면 나중에는 완벽하게 잘 알게 되지 않을까요?

반응형