반응형
#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>
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
뉴렉처 학습(서블릿/JSP) 48강 (0) | 2020.06.01 |
---|---|
뉴렉처 학습(서블릿/JSP) 47강 (0) | 2020.05.30 |
뉴렉처 학습(서블릿/JSP) 44강 (0) | 2020.05.28 |
뉴렉처 학습(서블릿/JSP) 43강 (0) | 2020.05.27 |
뉴렉처 학습(서블릿/JSP) 42강 (0) | 2020.05.26 |