반응형

#45강 JSP MVC model1

- JSP를 잘못 만들 경우 코드블럭이 복잡하는 등 문제가 발생. 이를 개선하기 위한 방법이 MVC moder1 방식이다.

- 입력코드, 출력코드를 정해진 장소에 모아 놓음으로써 개선.

- 입력과 제어를 담당하는 자바코드를 Controller, 이것을 HTML에서 가져다 쓰는 부분을 출력 담당으로 View, 출력 데이터를 Model 이라고 한다.

// MVC model1
<%@ 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 result;
	
	if(num % 2 == 0) 
		result = "홀수";
	else 
		result = "짝수";
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%=result %>입니다. 
</body>
</html>

 

#46강 JSP MVC model1을 model2 방식으로

- model2 방식에서는 컨트롤러와 뷰가 물리적으로 분리된 방식이다.

- 사용자 요청이 있을 경우 View만 서블릿으로 생성하므로 더욱 효율적인 작업이 가능해진다.

- 컨트롤러는 요청에 따라 dispatcher를 이용해서 포워딩 진행, 이때 공통으로 사용되는 dispatcher은 하나의 서블릿만 생성, 그외 업무 로직의 경우 별도로 pojo 클래스로 생성하여, 사용자 요청 시 dispatcher가 적절한 컨트롤러를 찾아 수행하는 방식으로 진행

- 실행 시에는 무조건 Controller(Spag.java)에서 실행

// Controller 서블릿 (Spag.java)
package com.newlecture.web;

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("/spag")
public class Spag extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = 0;
		String num_ = request.getParameter("n");
		if(num_ != null && !num_.equals(""))
			num = Integer.parseInt(num_);

		String result;
		
		if(num % 2 != 0) 
			result = "홀수";
		else 
			result = "짝수";
		
		request.setAttribute("result", result);
		
		//redirect(현재 작업내역과 전혀 상관없이 새로운 요청 하도록 하는 것)
		//forward(현재 작업내역 이어갈 수 있도록 공유)
		//forward 관계에서 사용할 수 있는 저장소는 request
		RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response);
	}
}
// View 서블릿 (spag.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>
반응형

+ Recent posts