어플리케이션 데이터를 처리하고 DB에 접근하며 , 비즈니스 로직과 데이터를 담당한다.
사용자 인터페이스 (UI)를 담당한다.
사용자한테 보이는 화면 (HTML ,CSS ,JS)
어플리케이션의 흐름을 제어하는 역할이다.
클라이언트의 요청을 받아 어떤 DAO를 실행시킬지 결정하고 결과를 View에 전달한다. (서블릿 파일 등등 ..)
public class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Model은 User 클래스로 구현되어 있습니다. 이 클래스는 사용자의 이름(name)을 저장하고, 생성자(public User(String name)), getter(public String getName()), setter(public void setName(String name)) 메서드를 통해 이름을 설정하고 가져올 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome, <%= request.getAttribute("userName") %>!</h1>
</body>
</html>
View는 welcome.jsp 파일로 구현되어 있습니다. 이 파일은 HTML 형식으로 작성되어 있으며, <%= request.getAttribute("userName") %> 표현식을 통해 사용자의 이름을 화면에 출력합니다. 여기서 request.getAttribute("userName")은 Controller에서 설정한 사용자 이름을 가져오는 코드입니다.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class WelcomeController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
User user = new User(name);
request.setAttribute("userName", user.getName());
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
Controller는 WelcomeController 클래스로 구현되어 있으며, Java Servlet을 상속받아 작성되었습니다. doPost 메서드는 사용자로부터 전달받은 이름을 처리하고, Model인 User 객체를 생성하여 해당 이름을 저장합니다. 그 다음 request.setAttribute("userName", user.getName())를 통해 사용자 이름을 request 객체에 저장합니다. 마지막으로 request.getRequestDispatcher("/welcome.jsp").forward(request, response) 코드를 통해 처리된 결과를 View인 welcome.jsp에 전달하고 화면에 출력합니다.
doGet 메서드는 doPost 메서드를 호출하는 역할을 합니다. 이렇게 구현함으로써 GET 요청과 POST 요청 모두 동일한 로직으로 처리됩니다.