개발공부 일지
학원수업_43day [HTML,CSS,JSP,Servlet(10day) - Model2-MVC / forward, redirect] 본문
학원수업/Web(HMTL,CSS,JSP,Servlet)
학원수업_43day [HTML,CSS,JSP,Servlet(10day) - Model2-MVC / forward, redirect]
짜몽- 2022. 9. 30. 09:13*전날 복습*
Model - Singleton Design Pattern
↓
Controller - Front Controller -Design Pattern
↓
View - EL 과 JSTL
↓
javascript Ajax / JSON
음식 만드는건 -> model
서빙하는건 view
Model2
Controller : select -> 요청분석, Model 과 view 제어
view : jsp -> 화면제공
Model: Java bean -> 비즈니스로직과 Data Access Logic
설계구조 아키텍쳐
MVC 란?
Model : Business Logic 과 Data Access Logic 을 담당 / Java Component(or Bean ) 가 담당 ( DAO, Service, VO , DTO .. )
View : client 에게 response 즉 응답을 담당 , 화면 표현 / JSP 가 담당
Controller : client 의 request를 분석, Model 과 연동 ,
연동결과를 적절한 View를 선택(forward or redirect)해 응답하게 한다 / Servlet 이 담당

* Software Architecture 소프트웨어 아키텍쳐
: 소프트웨어 아키텍쳐(설계구조 or 설계양식)는 소프트웨어 구성 요소(component or java bean) 들 사이의
관계를 표현하는 것을 말함
초기 개발 방식 : Servlet or JSP ↔ Database
ex ) 샘플예제 : step1-jsp-db.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*"%>
<%
// member db 에 접근해 회원수를 보여주는 웹페이지
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","scott","tiger");
String sql="select count(*) from member";
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
rs.next();
int count=rs.getInt(1);
rs.close();
pstmt.close();
con.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web 초기 개발 방식</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container pt-3">
<h4>회원수 <%=count %></h4>
</div>
</body>
</html>
Model 1 Architecture :
JSP ↔ Java Beans ↔ Database
샘플예제 : step2-model1.jsp MemberDAO
<%@page import="model.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Model1 설계방식 적용</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container pt-3">
회원수 <%=new MemberDAO().findMemberCount() %>
</div>
</body>
</html>
Model1 에서 JSP 역할 : client 에게 form 과 같은 화면 제공 ,
client 가 보낸 요청을 분석
요청에 따른 java bean(DAO..) 과 연동
결과를 클라이언트에게 응답
Model1 에서 Java Beans 역할 : bean == component 와 동일한 의미
business logic 과 data access logic 을 담당
Model 1 -> Model 2 아키텍쳐 변화의 특징
- java beans 역할은 동일 , MVC 의 Model 영역
- Model 1 에서 jsp 가 담당하는 역할이 분화 : Controller와 View로 분업화
Model 2 Architecture : MVC Design Pattern
Controller
View Model <--> Database
MVC는 Model2 아키텍쳐의 근간을 이루는 Design Pattern 이다
자바(or 스프링) 웹어플리케이션 설계 방식의 근간을 이루는 디자인 패턴이 MVC다
Controller 에서 View로 제어를 이동하는 방식 , View 를 선택하는 방식
- forward 방식
- redirect 방식
1. forward 이동방식
기존 request와 response 유지시킨 채 제어를 이동한다 => 주로 정보 조회시 사용
- WAS(Web Container) 상에서 이동되므로 클라이언트 측 url 은 변동이 없다
즉 클라이언트 측은 이동된 것을 알지 못한다
이런 특성으로 클라이언트 측에서 새로고침(f5)시에는 기존 동작이 반복된다
-> 등록,삭제,수정에는 적합하지 않다


2. redirect 이동방식
클라이언트 브라우저에게 이동 url 을 지정 , 등록 수정 삭제 작업에 적합
기존 request와 response는 유지되지 않고 새로운 request, response 가 생성됨
클라이언트 측으로 이동할 url 을 지정해서 브라우저가 이동해 view 정보를 보도록 이동하는 방식


'학원수업 > Web(HMTL,CSS,JSP,Servlet)' 카테고리의 다른 글
| 학원수업_45day [JSP,Servlet(12day) - EL , JSTL] (0) | 2022.10.05 |
|---|---|
| 학원수업_44day [JSP,Servlet(11day) - Model2-MVC, Singleton] (0) | 2022.10.04 |
| 학원수업_41day [HTML,CSS,JSP,Servlet(8day) - JSP] (0) | 2022.09.28 |
| 학원수업_40day [HTML,CSS,JSP,Servlet(7day) - Cookie / Session] (0) | 2022.09.27 |
| 학원수업_39day [HTML,CSS,JSP,Servlet(6day) - ServletConfig, Servletcontext] (0) | 2022.09.26 |