MVC 패턴
- Model, View, Controller의 약자로, 웹 애플리케이션을 비즈니스 로직, 프레젠테이션 로직, 요청처리 데이터로 분리하는 디자인 패턴
비즈니스 로직
- 사용자의 요청에 따른 일을 처리하는 코드를 의미 (예를들어 / 고객, 제품, 주문정보의 조작)
프레젠테이션 로직
- 사용자에게 보여주기 위한 부분 (위치, 폰트, 크기 등)
요청 처리 데이터
- 비즈니스 로직 + 프레젠테이선 로직 함께 묶는 것
MVC 구성요소
모델(model)
- 비즈니스 로직을 담는 객체 (사용자의 일처리를 위해 사용되는 모든 자바 class)
뷰(View)
- 모델의 정보를 보여주는 역할 (JSP)
컨트롤러(controller)
- 모델과 뷰 사이에 동작이 있을 때 조정하는 역할 (Servlet)
- 웹으로부터 받은 요청에 가장 적합한 모델을 생성과 처리, 적절한 뷰를 선택하여 모델을 전달
- 사용자의 요청을 받아들임
동작 원리
- 클라이언트는 컨트롤러(Servlet)에게 요청하고 컨트롤러는 사용자의 요청을 파악 후, 해당 사용자의 요청 URL주소를 가지고 '모델(dao)'을 선택하고 적절한 '뷰(.jsp)' 를 선택
상태유지 방법
- 브라우저를 닫기 전까지 = session을 사용 (session.setAttribute)
- 이 다음 연결된 뷰까지 상태 유지 = reqeust를 이용 (request.setAttribute)
- 상태 유지 된 값을 전송 할 View 페이지 저장( getRequestDispatcher)
- request 객체와 request 객체를 해당 View페이지로 전송 (forward)
Controller (서블릿) 기본 내용
1. DAO (모델)로 부터 데이터를 받아옴
2. 해당 데이터를 상태유지 (request.setAttribute)
3. dispatcher 만들기 (request.getRequestDispatcher("보낼 뷰.jsp"))
4. 뷰로 보내기 (dispatcher.forward(request, response);)
protected void doGet(......){
BookDAO dao = new BookDAO();
//1. '모델'로부터 값을 받아옴(dao로 부터)
ArrayList<BookVO> list = dao.printBookList();
//2. 상태유지
request.setAttribute("list", list);
// 3. 4. '뷰'로 상태유지된 list를 보내기
RequestDispatcher dispatcher = request.getRequestDispatcher("listBook.jsp");
dispatcher.forward(request, response);
}
JSTL(JavaServer Pages Standard Tag Library)
- 사용자 정의 태그 표준으로 만들어 놓은 것
- JSP에서 자바문법을 사용하지 않고 태그로 자바문법을 사용하고 싶을 때 사용
- JSTL 확장 태그를 사용하려면 taglib 지시자로 라이브러리를 선언해야 함
taglib 으로 선언
<%@ taglib prefix="" uri="" %>
- import 하듯이 JSP 최상단에 선언하면 된다.
prefix : 구분하기 위한 값을 적어주면 됨
uri: JSTL 라이브러리에서 지원되는 기능을 태그별로 구분 (JSTL 라이브러리에 존재하는 주소를 의미)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
forEach 예시
<prefix태그명:forEach var="" item="${상태 유지 한 변수명}">
- 전달받은 list에서 bookid와 bookname을 출력
- ${ } 표현 언어로 꼭 감싸야함 ( 표현 언어 설명은 아래 있음 )
- b.bookid / b.bookname은 VO의 getter를 사용한 것임으로 getter가 꼭 필요함 !
<c:forEach var="b" items="${list}">
<tr> <td> ${b.bookid} </td>
<td> ${b.bookname} </td>
</tr>
if문 예시
<c:if test="${re==1}">
도서를 삭제하였습니다.
</c:if>
<c:if test="${re !=1}">
도서를 실패하였습니다.
</c:if>
${ } - 표현언어 (EL)
- JSP에서 자바 코드를 없애려는 노력은 계속되었다. EL은 좀 더 편리하게 자바 표현식을 다루기 위해 JSP2.0부터 도입되었다. 데이터를 출력하는 역할을 한다.
HTML에서 ${ } 식으로 표현
${ ? : } -> 삼항 연산자 가능
request.setAttribute("title", "도서목록");
<h2> ${title} </h2>
JSTL 다운로드 하기
1. 다운로드
https://mvnrepository.com/
2. JSTL 검색
3. 버전 클릭
4. jar 클릭 하여 다운로드
5. lib 안으로 옮기기 ( jstl.jar )
6. 성공!
반응형
'개발 > 교육' 카테고리의 다른 글
(Spring) 57일차 (0) | 2022.06.22 |
---|---|
(Spring) 41일차 (0) | 2022.05.27 |
(JSP)35일차 (0) | 2022.05.19 |
(JSP) 34일차 (0) | 2022.05.18 |
(HTML, CSS ) 32일차 (0) | 2022.05.12 |
댓글