공부/Spring

[Spring] 스프링 실습 들어가기 앞서

비렴 2022. 5. 25. 21:10

[MVC]

1. MVC란?
   코드를 기능에 따라 Model, View, Controller 3가지 요소로 분리하여 UI코드와 비즈니스 코드를 분리하는 구조
   종속성을 줄이고 재사용성을 높이며 보다 변경이 용이

2. 3가지 요소
   Model : 데이터와 비즈니스 로직을 담는 객체
   View : 사용자에게 시각적으로 보여주는 부분(UI)
   Controller : 사용자의 요청을 받아 Model의 변경된 상태 반영, 응답을 위한 View를 선택

3. MVC 기본 구조(Model2)

* Model1은 Controller가 없는 구조로 소규모에서 사용
 But, View가 Controller+View 역할을 다해야하기 때문에 유지 보수가 용이하지 않음

4. MVC 변형

   클라이언트의 모든 요청은 Front Controller로 -> POJO를 추가하는 등 변형
   MVC가 변형되다가 나온 것이 Spring!
  
   'Controller를 어떻게 개선해야 업무의 효율성이 증가하는가?'가 핵심!

5. Spring MVC

출처 : https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:ptl:spring_mvc_architecture

                                                   Dispatcher Servlet(Front Controller)
                                                                                                Controller(POJO)

                                                            
[JSTL/EL]

1. JSTL와 EL이란? 
   JSTL(Jsp Standard Tag Library) : JSP 표준 라이브러리
                                            JSP에서 자주 사용하는 기능(반복문, 조건문 등)을 미리 구현해놓은 커스텀 태그
                                            라이브러리 모음
                                            예시) <% for(int i = 1; i <= 5; i++){ -> <c:forEach begin="1" end="5" step="1">
   EL(Expression Language) : 출력 문법을 대체하는 표현 언어
                                     예시) <%=i %> -> ${i }
                                                   |             |
                                                 변수        이름

2. 왜 사용하는가?
   - 페이지의 가독성을 높이기 위해
   - 유지보수에 편리
   - 일부 디자인 툴에서 <% %>가 깨질 수 있어서

3. JSTL 환경설정
   - https://mvnrepository.com/artifact/javax.servlet/jstl에서 원하는 버전 선택 후 jar파일을 다운로드


   - 프로젝트의 [src]-[webapp]-[WEB-INF]-[lib]에 넣어준다(드래그 혹은 Copy&Paste)
   - jsp 파일의 지시자 태그 taglib를 이용하여 prefix설정을 해준다.
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

   prefix는 접두사라는 의미로 여기서는 다른 태그와 충돌이 나지 않게 하기 위해 필요!

4. EL : 표현식,출력식
   - JSTL과 함께 사용
   - ${식  }
         |-> 1. var로 된 변수 이름
         |-> 2. 연산자(산술, 관계, 논리)
         |-> 3. 속성이름
             예시) <Controller>
                    ArrayList<MemberVO> list = new ArrayList<MemberVO>();
                    request.setAttribute("list",list); //->객체바인딩
                    RequestDispatcher rd = request.getRequestDispatcher("member.jsp");
                    rd.forword(request, response);

                    <JSP>
                     ArrayList<MemberVO> list= (ArrayList<MemberVO>)request.getAttribute("list");
                     for --이하 생략--

                     request 객체에 list라는 이름의 값을 바인딩->jsp파일에서 getAttribute로 받아온다.
                     즉,
                     ArrayList<MemberVO> list= (ArrayList<MemberVO>)request.getAttribute("list");
                     |-> ${list }로 가능!