모델과 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 |