// MVC ( Model , View, Controller)
- Model > 하나의 계층에서 또다른 계층으로 데이터를 전달하는 역할 > 데이터(데이터 관련 업무-자바) 담당
- View > 출력 업무 담당(HTML 코드-JSP)
- Controller > 입력과 제어 담당(자바 코드) > 전체 업무 통제 역할
1. JSP Model 1
2. JSP Model 2
// Model1
- HTML + CSS +JavaScript + Java + Servlet + JSP = *.jsp
- <% java code %> + client code
- 코드가 뒤엉켜서 불편
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--controller-->
<%
int num = 0;
String num_ = request.getParameter("n");
if(num_ != null && !num_.equals(""))
num = Integer.valueOf(num_);
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> spaghetti </title>
</head>
<body>
<%=result%>입니다. <!-- 출력: view / 출력 데이터 result: model -->
</body>
</html>
// Model 2
- 컨트롤러와 뷰가 물리적으로 분리된 방식
- Servlet: 자바 코드 작성
- JSP: 클라이언트 코드 작성
- 디자인 패턴: MVC 패턴 기반 구현
※ jsp 파일은 WEB-INF에 넣어서 바로 실행이 불가능하게 한다.
- dispatcher(디스패쳐)
- redirect : 현재 작업 내용과 전혀 상관 없이 새로운 요청을 하는 것
- forward : 현재 작업한 내용을 이어갈 수 있도록 공유하는 것
※컨트롤러(java)에서 실행하기!
package com.sorrel012.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.valueOf(num_);
}
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
request.setAttribute("result", 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> spaghetti </title>
</head>
<body>
<%= request.getAttribute("result") %>입니다.
</body>
</html>
'서버 > Servlet-JSP' 카테고리의 다른 글
[Servlet-JSP] Ajax와의 통신 (1) | 2023.05.18 |
---|---|
[Servlet-JSP] Reload (1) | 2023.05.17 |
[Servlet-JSP] 포워딩(Forwarding) (0) | 2023.02.05 |
[Servlet-JSP] URL 패턴, FrontController 패턴, Command 패턴 (0) | 2023.01.29 |
[Servlet-JSP] EL(Expression Language) (0) | 2023.01.23 |