스프링 MVC 1편 - 서블릿, JSP, MVC 패턴
서블릿, 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하기
-
아이콘 클릭하기
-
우측 Gradle에서 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… 등등
→ 공통기능을 만들어서 처리하기가 어려움.. 공통으로 메소드를 묶어서 호출하는 것으로 변경해도, 공통 메소드 호출 자체가 중복
Leave a comment