스프링 MVC 1편 - 서블릿, JSP, MVC 패턴

less than 1 minute read

서블릿, JSP, MVC 패턴

테스트케이스 작성

  • @AfterEach

테스트가 종료될 때마다 수행되는 메소드.

  • Assertions

assertj 라이브러리

→ assertThat() 객체 비교할 때 사용

서블릿으로 웹애플리케이션 만들기

서블릿으로 request를 받아 HTML으로 응답하는 방식으로 구현함.

동적인 HTML을 만드는 것은 가능하나 HTML 태그 한줄한줄 writer에 더해가면서 코딩하기때문에 디버깅도 힘들고 비효율적임. → 템플릿 엔진 등장 이유

템플릿 엔진 종류 : JSP, Thymeleaf, FreeMarker, Velocity 등

JSP로 웹애플리케이션 만들기

  • dependency 추가
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' 
implementation 'javax.servlet:jstl'

refresh하기

  1. 아이콘 클릭하기 icon

  2. 우측 Gradle에서 refresh클릭 refresh

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

뷰 영역과 비즈니스 로직 부분이 JSP 하나에 모두 담겨있기 때문에 유지보수가 힘들다

MVC패턴

  • Controller → Model → View
  • RequestDispatcher.forward()

서블릿 or JSP 이동할 때 사용. 서버 내부에서 재호출함

redirect는 클라이언트가 redirect 경로로 다시 요청하기 때문에 URL 경로도 변경되지만 forward는 내부에서 호출하기 때문에 클라이언트가 인지할 수 없음

  • WEB-INF

이 디렉토리 안에 JSP가 존재하면 직접 호출이 불가함. 컨트롤러에서 JSP호출해야 가능

  • 단점

Controller에 중복이 너무 많음 (viewPath ~ forward 까지)

viewPath를 항상 하드코딩함.. 만약에 한번에 다 바꿔야한다면?

사용하지 않는 객체도 있음.. response… 등등

→ 공통기능을 만들어서 처리하기가 어려움.. 공통으로 메소드를 묶어서 호출하는 것으로 변경해도, 공통 메소드 호출 자체가 중복

Categories:

Updated:

Leave a comment