겉바속촉
JSP MVC 2 본문
MVC2 코드 형태
<입력 코드> ✔ 입력과 제어를 담당 : Controller [자바코드] |
<결과물> ✔ 출력 데이터 : Model [출력을 위한 변수] |
👉 View가 아예 분리되어 있는 것이 MVC1과의 차이점
👉 Controller와 View가 물리적으로 분리되어 있다고 보면 ok
<출력 코드> ✔ 출력 담당 : View [HTML 코드] |
MVC1 구조
2022.06.15 - [IT 일기 (상반기)/JAVA] - JSP MVC 1
다음처럼 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>
'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 |