Back-end/JSP & Servlet

JSP MVC model1 & model2 방식

@Eeap 2022. 7. 12. 22:24
반응형

앞서 model1 방식은 model과 view controller 가 결합된 방식으로 jsp에서 흔히 코드 블록으로 java 코드를 삽입하는 방식을 말한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%
 	int num = 0;
	String num_ = request.getParameter("n");
	if (num_!=null&&!num_.equals(""))
		num = Integer.parseInt(num_);
	String model;
	if(num%2 !=0) 
		model = "홀수";
	else 
		model = "짝수";
%>
<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">

</head>
<body>
	<%=model %>입니다.
</body>
</html>

하지만 이와 반대로 model2 방식은 controller와 view가 물리적으로 분리된 방식으로 controller에서 포워딩해서 view쪽으로 흐름을 전달하는 방식이다.(dispatcher를 통해서 forwarding된다.)

package com.newlec.web;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/spag")
public class Spag extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		int num = 0;
		String num_ = request.getParameter("n");
		if (num_!=null&&!num_.equals(""))
			num = Integer.parseInt(num_);
		String model;
		if(num%2 !=0) 
			model = "홀수";
		else 
			model = "짝수";
		
		request.setAttribute("model", model);
		RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response); // 현재 작업 내용을 이어감.
	
	
	}
	

}

여기서 request에 값을 저장해 view(jsp파일) 쪽으로 dispatcher를 통해 포워딩해서 흐름을 전달한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">

</head>
<body>
	<%=request.getAttribute("model") %>입니다.
</body>
</html>

 

반응형