본문 바로가기
스프링

[스프링] 서블릿, JSP, MVC 패턴

by moonstal 2022. 6. 9.

서블릿, 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 요청-> 파라미터를 검증, 비즈니스 로직 실행, 뷰에 전달할 결과 데이터를 조회-> 모델에 담기
      • 서비스: 비즈니스 로직 처리
      • 리포지토리: 데이터 접근
    • 모델: 뷰에 출력할 데이터 담아둠
    • 뷰: 모델에 담겨있는 데이터 사용 -> 화면 그림
  • 적용
    • 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