서블릿, JSP, MVC 패턴
서블릿
- 서블릿: 자바 코드로 html 작성
response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("html~~");
JSP
- JSP: <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- import: <%@ page import="hello.servlet.domain.member.MemberRepository" %>
- 자바 코드 입력: <% ~~ %>
- 자바 코드 출력: <%= ~~ %>
MVC 패턴
- 배경: 너무 많은 역할, 변경의 라이프 사이클, 기능 특화
- Model View Controller
- 컨트롤러: HTTP 요청-> 파라미터를 검증, 비즈니스 로직 실행, 뷰에 전달할 결과 데이터를 조회-> 모델에 담기
- 서비스: 비즈니스 로직 처리
- 리포지토리: 데이터 접근
- 모델: 뷰에 출력할 데이터 담아둠
- 뷰: 모델에 담겨있는 데이터 사용 -> 화면 그림
- 컨트롤러: HTTP 요청-> 파라미터를 검증, 비즈니스 로직 실행, 뷰에 전달할 결과 데이터를 조회-> 모델에 담기
- 적용
- Model: HttpServletRequest 객체사용-> request.setAttribute() , request.getAttribute()->데이터를 보관, 조회
컨트롤러
//Model에 데이터 보관 request.setAttribute("members", members); String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); // 다른 서블릿이나 JSP로 이동, 서버 내부 다시 호출<->redirect dispatcher.forward(request, response);
- 뷰
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:forEach var="item" items="${members}"> <tr> <td>${item.id}</td> <td>${item.username}</td> <td>${item.age}</td> </tr> </c:forEach>
- MVC 컨트롤러 단점
- 포워드 중복,
- iewPath 중복,
- 사용하지 않는 코드(HttpServletRequest, HttpServletResponse),
- 공통 처리 어렵-> 프론트 컨트롤러(Front Controller) 패턴
링크
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1
'스프링' 카테고리의 다른 글
[스프링] 스프링 MVC (0) | 2022.06.09 |
---|---|
[스프링] MVC 프레임워크 (0) | 2022.06.09 |
[스프링] 웹 애플리케이션 이해, 서블릿 (0) | 2022.06.09 |
스프링 핵심원리 (0) | 2022.06.01 |
스프링 프로젝트 (0) | 2022.01.07 |