📝 JSP
🖥️ 1. MVP 패턴
M
: Model
사용자가 원하는 "데이터"나 정보를 제공
C
: Controller
사용자가 요청을 처리하고, 그 요청에 따른 전체적인 흐름을 제어
1-1. MVC1 패턴
- MVC1 패턴의 경우 view와 Controller를 모두 JSP가 담당하는 형태를 가진다.
- JSP 하나로 유저의 요청을 받고 응답을 처리하므로 구현 난이도는 쉽다.
- 단순한 프로젝트에는 괜찮겠지만 내용이 복잡하고 거대해질수록 이 패턴은 힘을 잃는다. 즉, 유지보수에 있어서 문제가 발생한다.
📝 예제
EX) mvc1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
int num = 0;
String num_ = request.getParameter("num");
if( num_ != null || !num_.equals("") ){
num = Integer.parseInt(num_);
}
String result = "";
if(num%2 != 0){
result = "홀수";
} else {
result = "짝수";
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=result %>
</body>
</html>
1-2. MVC2 패턴
- MVC2 패턴은 널리 표준으로 사용되는 패턴이다.
- 요청을 하나의
컨트롤러(Servlet)
가 먼저 받는다. 즉, MVC1과는 다르게 Controller, View가 분리되어 있다.
- 역할이 분리되어 MVC1 패턴에서의 단점을 보완할 수 있다. 그러므로 개발자는 M, V, C 중에서 수정해야할 부분이 있다면 그것만 꺼내어 수정하면 된다.
- 유지보수에 있어서 큰 이점을 가진다.
📝 예제
EX) caos.java
package com.codingbox.web.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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("/caos")
public class Caos extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
int num = 0;
String num_ = req.getParameter("num");
if( num_ != null || !num_.equals("") ){
num = Integer.parseInt(num_);
}
String result = "";
if(num%2 != 0){
result = "홀수";
} else {
result = "짝수";
}
req.setAttribute("result", result);
// RequestDispatcher : 요청을 제공하는 도구, 즉, 요청을 보내주는 인터페이스
RequestDispatcher dispatcher
= req.getRequestDispatcher("mvc/mvc2.jsp");
dispatcher.forward(req, resp);
}
}
EX) mvc2.jsp
<%@ 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>
<%=request.getAttribute("result") %>입니다.
</body>
</html>