일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 게시판만들기
- 2020정보처리기사실기정리
- jsp 팝업띄우기
- 자바배열예제
- spring crud게시판
- 스프링 crud
- js datepicker
- jsp 날짜팝업
- 자바 정규표현식 예제
- 날짜지정팝업
- 오버라이딩
- 정보처리기사실기정리
- 2020정보처리기사실기요약
- PLSQL
- 오라클설치
- 프로그래머스 쿼리문
- 스프링게시판만들기
- html기초
- spring crud
- 2020정보처리기사실기
- jsp게시판만들기
- 프로그래머스 SQL
- 자바연산자
- Oracle기초
- CRUD게시판만들기
- 프로그래머스 MYSQL
- 자바기초
- 스프링 CRUD게시판
- crud게시판
- 정처기실기정리
- Today
- Total
영보의 SystemOut.log
[Spring] Spring MVC구조 / MVC 패턴 본문
# MVC : Model View Controller
- M(Model) : 비지니스 영역의 상태 정보를 처리한다
일반 자바 → 데이터 읽기 → 사용자 요청처리
- V(View) : 비지니스 영여에 대한 프레젠테이션 뷰를 담당한다
Controller로 부터 결과값을 전송 받아서 → 화면에 출력 → JSP'
- C(Controller) : 사용자의 입력 및 흐름제어를 담당한다.
사용자 요청 → Model을 연결해서 데이터를 가지고 온다 → JSP로 전송 (스프링에서 지원) → JSP/Sevlet == Servlet(화면출력(x),연결,보안)
# MVC 패턴
- Controller → Model → Controller → View
- Spring이 Controller가 하는 일을 분산시켜준다.
# Spring
- 클래스를 묶어서 관리해줌 (인터페이스 기반)
- 하나로 묶어줌 - 연결해줌 → 인터페이스가 해주는 역할 : 관련된 여러개의 클래스를 통합해줌
# Controller가 하는 일
- 컨트롤러가 무너지면 MVC구조가 다 무너기 때문에 한번 만들어 놓으면 고정시켜야됨
=> DAO랑 JSP만 만들면 되기 때문에 결합도 낮아지고 응집도 높아짐
※ 좋은 프로그램은 응집도가 높고, 결합도는 낮은 프로그램
# Controller.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package com.sist.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// XML => Annotation
import java.util.*;
import com.sist.model.*;
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
/*
* 매칭 => ListModel == list.jsp (list.jsp)
* DetailModel == detail.jsp(detail.jsp)
*
* 클라이언트 ==============>
* 요청(request)
*/
private Map clsMap=new HashMap();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 요청을 받는다 ==> list, detail
// 2. http://localhost/OnLineStudy15_MVC(list).do
// 3. http://localhost/OnLineStudy15_MVC(detial).do
// 4. http://localhost/OnLineStudy15_MVC(Controller?com=list
String cmd=request.getRequestURI(); //OnLineStudy15_MVC/(list).do
// URI ==> /OnLineStudy15_MVC/list.do(?page=2) => request에 따로 저장
System.out.println(cmd);
cmd=cmd.substring(request.getContextPath().length()+1);
// request.getContextPath():/OnLineStudy15_MVC/
// 사용자가 요청한 요청내용 확인
// 클래스를 찾기 시작
Model model=(Model)clsMap.get(cmd);
// 요청처리 ==> 메소드
String jsp=model.handlerRequest(request);
// 결과 값을 받은 request ==> jsp로 전송
RequestDispatcher rd=request.getRequestDispatcher(jsp);
rd.forward(request, response);
}
@Override
public void init(ServletConfig config) throws ServletException {
clsMap.put("board/list", new ListModel());
clsMap.put("detail", new DetailModel());
}
}
|
cs |
# ListModel.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.sist.model;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
public class ListModel implements Model{
@Override
public String handlerRequest(HttpServletRequest request) {
List<String> list=new ArrayList<String>();
list.add("홍길동");
list.add("심청이");
list.add("박문수");
list.add("춘향이");
list.add("이순신");
request.setAttribute("list", list);
return "board/list.jsp";
}
}
|
cs |
# list.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<h1>이름목록</h1>
<c:forEach var="name" items="${list }">
${name }<br>
</c:forEach>
</center>
</body>
</html>
|
cs |
- Controller 하나 만들고 jsp-model 하나씩 대응시켜서 만들면 유지보수/관리에 용이하다.
'Spring' 카테고리의 다른 글
[Spring] Spring MVC 구조 자유게시판 만들기 - (2) (0) | 2020.11.10 |
---|---|
[Spring] Spring MVC 구조 자유게시판 만들기 - (1) (2) | 2020.11.07 |
[Spring] Spring 데이터 그리드 리스트 출력하기 (0) | 2020.11.03 |
[Spring] STS & Eclipse 글꼴 설정하기 (2) | 2020.10.20 |
[Spring] MVC / MVC동작 순서 (0) | 2020.10.12 |