모델(Model)

모델과 3티어

  • 모델을 담당하는 영역을 세분화 하여 데이터베이스를 담당하는 영역과 비즈니스 로직을 처리하는 영역으로 구분
  • 서비스(로직 처리) 계층, 영속(데이터 처리) 계층으로 구분
  • 계층 3티어 구조

 

계층 3티어 구조


DTO(Data Transfer Object)

 

  • 대부분 한 개 이상의 데이터를 전달할 때가 많기 때문에 여러 개의 데이터를 묶어서 하나의 객체로 전달하는 것.
  • 여러 개의 데이터를 묶어서 필요한 곳에 전달하거나 호출을 결과로 받는 방식을 사용
  • Java Beans형태로 구성(아래 3가지 구조를 가짐)
    • 생성자가 없거나 반드시 파라미터가 없는 생성자 함수를 가지는 형태.
    • 속성(멤버 변수)은 private으로 작성.
    • getter / setter를 제공하는 것.

서비스 객체

 

  • DTO는 단순히 여러 개의 데이터를 묶어서 하나의 객체를 구성하는 용도로 사용
  • 주로 서비스 객체 메소드들의 파라미터나 리턴 타입으로 사용
  • 서비스 객체는 프로그램이 구현해야 하는 기능들의 실제 처리를 담당
  • CRUD(등록/조회/수정/삭제) 기능들은 모두 서비스 객체에 모아서 구현됨.

 

 

  • enum 타입의 클래스를 작성하는 경우, 가장 큰 장점은 정해진 수만큼만 객체를 생성 할 수 있다는 점이다.
  • 항상 하나의 객체만 가리키게 하는 패턴은 싱글톤 패턴(singleton pattern)이라고 한다.

컨트롤러에서 모델 처리하기

 

  • 웹 MVC 구조에서는 화면에 필요한 데이터를 처리하고자 컨트롤러는 서비스 객체의 힘을 빌려 처리함. 

 

 

  • JSP-EL(Expression Language)
    • ${}식으로 사용함 
    • HTML 태그, 자바스크립트, CSS등을 이용해서 코드를 작성
    • 간단한 표현식을 이용해서 데이터를 출력하는 용도
    • EL을 출력만을 담당하기 때문에 제어문이나 반복문과 같이 '식이 아닌 문"을 처리히시기 위해서는 JSTL이라는 라이브러리가 필요

JSTL

 

  • JSTL(JavaServer Pages Strandard Tag Language)은 JSP에서 동작하는 새로운 태그들의 묶음.
  • 자바 문법보다 조금 더 간결하게 제어문이나 반복문, 선언문 등을 처리할 수 있고, 확장 가능함. 

JSP파일에서 JSTL사용하기

 

  • <%@ %>로 작성되는 코드를 '지시자(directives)'라고 한다.
  • 아래 지시자는 태그 라이브러리 지시자라고 하는데 이 선언이 있어야만 JSP에서 JSTL을 이용할 수 있다. 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

  • <c:forEach>
속성명 속성값
var EL에서 사용될 변수 이름
items List, Set, Map, Enumeration, Iterator 등의 컬렉션
begin/end 반복의 시작/끝 값 
  <ul>
    <c:forEach var="dto" items="${list}">
        <li>${dto}</li>
    </c:forEach>
  </ul>

  <ul>
        <c:forEach var="num" begin="1" end="10">
            <li>${num}</li>
        </c:forEach>
  </ul>

 

  • <c:if>,<c:choose>
    <c:if test="${list.size() % 2 == 0}">
        짝수
    </c:if>
    <c:if test="${list.size() % 2 == 0}">
        홀수
    </c:if>

    <c:choose>
        <c:when test="${list.size() % 2 == 0}">
            짝수
        </c:when>
        <c:otherwise>
            홀수
        </c:otherwise>
    </c:choose>

 

  • <c:set>
    <c:set  var="target" value="5"></c:set>
    <ul>
        <c:forEach var="num" begin="1" end="10">
            <c:if test="${num==target}">
                num is target
            </c:if>
        </c:forEach>
    </ul>

'Backend > Spring' 카테고리의 다른 글

@Autowired @Quelifier @Component @Value  (0) 2023.01.07
Bean을 .xml 통해 만들어 보기  (0) 2023.01.07
Spring이란? (DI 와 IOC)  (0) 2023.01.04
HttpServlet  (0) 2022.11.29
웹 프로젝트  (0) 2022.11.28