Model은 데이터를 가진 객체로 애플리케이션이 포함해야 할 데이터가 무엇인지를 정의한다. Model에서 데이터의 수정이나 조작이 발생하면 Controller와 View를 통해서 클라이언트에게 해당 데이터의 결과를 제공한다.
- Model의 특징
사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 한다.
View나 Controller에 대해 어떤 정보도 알지 않아야 한다.
변경이 발생하면 변경 통지에 대한 처리 방법을 구현해야 한다.
View는 Model을 통해서 클라이언트에게 데이터와 함께 화면을 나타내는 인터페이스 요소이다.
(예) Main.jsp, Login.jsp 처럼 화면에 나타나는 페이지
- View의 특징
Model이 가지고 있는 정보를 따로 저장하면 안 된다.
Model이나 Controller와 같이 다른 구성 요소를 몰라야 한다.
변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.
Model과 View 사이를 이어주는 역할로서 클라이언트가 접근한 URL에 따라서 클라이언트의 요청사항을 파악하여 Model을 통해 DB에서 요청사항에 맞는 데이터를 가져오고 해당 데이터를 View를 통해 클라이언트에게 제공한다.
(예) RegisterProcess.jsp, LoginProcess.jsp 처럼 데이터를 view에 입출력하는 과정
- Controller의 특징
Model과 View에 대해서 알아야 한다.
Model과 View의 변경을 모니터링해야 된다.
: 자바로 웹 애플리케이션을 개발 할 수 있도록 만든 기술, 서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할을 함
: @WebServlet("")에 어떤 요청이 들어왔을 때 해당 서블릿을 호출할 것인지 작성한다.
이 때, 꼭 제일 앞에 /를 붙여줘야함.
ex) @WebServlet("/main") : 클라이언트로부터 main에 대한 요청이 들어오면 해당 서블릿을 사용한다는 뜻
크게 두가지 방식이 있음. 첫 번째로 web.xml에 직접 맵핑해주는 방법이 있는데 매번 web.xml에 맵핑을 해주는게 번거롭다고 판단되어 두 번째 방법인 @WebServlet 어노테이션을 작성하여 맵핑하는 방법을 선호하게 될 것 같다.
첫번째 방법)web.xml에 직접 맵핑(아래 코드를 web.xml에 추가하는 방법)
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet.do</url-pattern>
</servlet-mapping>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>HelloServlet.jsp</h1>
<strong>${message }</strong>
<a href="./HelloServlet.do">바로가기</a>
</body>
</html>

두번째 방법)
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/AnnoMapping.do")
public class AnnoMapping extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("message", "@WebServlet으로 매핑");
req.getRequestDispatcher("./AnnoMapping.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<body>
<h1>HelloServlet.jsp</h1>
<strong>${message }</strong>
<a href="${pageContext.request.contextPath }/AnnoMapping.do">바로가기</a>
</body>
</html>


DAO로 구현한 게시판 Servlet으로 구현시 게시판을 get방식과 post방식으로 크게 나눠보기


Servlet class 내에서 application, session 객체 생성 메소드