겉바속촉

JSP MVC 2 본문

IT 일기 (상반기)/JAVA

JSP MVC 2

겉바속촉 2022. 6. 15. 11:30
728x90
반응형

 

MVC2 코드 형태


<입력 코드>


✔ 입력과 제어를 담당 : Controller [자바코드]


 <결과물>
 출력 데이터 : Model [출력을 위한 변수]

👉 View가 아예 분리되어 있는 것이 MVC1과의 차이점

👉 Controller와 View가 물리적으로 분리되어 있다고 보면 ok


<출력 코드>


 출력 담당 : View [HTML 코드]

 


 

 

MVC1 구조

2022.06.15 - [IT 일기 (상반기)/JAVA] - JSP MVC 1

 

JSP MVC 1

MVC1 코드 형태 <입력 코드> ✔ 입력과 제어를 담당 : Controller [자바코드]  <결과물> ✔ 출력 데이터 : Model [출력을 위한 변수] <출력 코드> ✔ 출력 담당 : View [HTML 코드] 👉 입력 코드와 출력 코드

2-juhyun-2.tistory.com

 

다음처럼 Controller를 이제 지워줄 예정!!!

 

 

그리고 지워버린 코드는 새로운 클래스를 만들어 붙여주었습니다:)

 

 

저 두개를 이제 이어줄만한 것을 만들어야겠네요

그래서 포워딩을 해주어야 합니다.

항상 비교되는 것은 redirect!!!

 

👉 forward : 현재 작업중이던 것을 이어갈 수 있게 공유하는 것이 존재

👉 redirect : 현재 작업중이던 것과는 전혀 상관없이 새로운 요청을 하도록 하는 것

 

 

 

1. dispatcher로 어디로 값을 보낼지 정해주기

request.getRequestDispatcher("spag.jsp");

 

2. 변수화 하기

RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");

 

3. 포워딩하기

dispatcher.forward(request, response);

 

현재 작업 했던 내용들이 request, response에 담겨져 

"spag.jsp"로 전해지고 요청이 진행됩니다.

그리고 이 jsp 파일은 사실 서블릿!!!

 

 

- forward 관계에서 사용할 수 있는 저장소 : request

- page 내에서 혼자 사용할 수 있는 저장소 : page context

- session에서 공유될 수 있는 저장소 : session

- 모든 session, 모든 page에서 공유될 수 있는 저장소 : page

- 클라이언트에 저장하는 저장소 : cookie

 

 

4. 값 담아주기

request.setAttribute("request", result);

 

5. view 에서는 값 가져만 오기

<%=request.getAttribute("result")%>

 

6. 실행

실행은 컨트롤러가 주인!

컨트롤러에서 실행해주기

 

 

반응형

 

 

전체 코드

 

- 컨트롤러 코드

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("request", result);

		RequestDispatcher dispatcher 
			= request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response);
		
	}
}

 

- 뷰 코드

<%@ 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>

 

 

 

 

 

 

728x90
반응형

'IT 일기 (상반기) > JAVA' 카테고리의 다른 글

EL의 데이터 저장소  (0) 2022.06.15
EL(Expression Language)  (0) 2022.06.15
JSP MVC 1  (0) 2022.06.15
JSP 휘뚜루마뚜루 해보기  (0) 2022.06.14
JSP & Jasper  (0) 2022.06.14