Dev/Spring

[Spring MVC 1] 서블릿/JSP/MVC (1)

kjyyjk 2023. 1. 22. 00:05

 학습 내용 

회원 관리 웹 애플리케이션 구현 ( 서블릿 / JSP ) / MVC 패턴의 필요성


* 회원관리 웹 애플리케이션 - 서블릿

 

회원 저장소인 MemberRepository는 싱글톤 패턴 적용 --> new 연산자 사용x

 

 

서블릿 호출 시 HTML Form을 만들어서 응답!

 

HTML을 응답하니 HTTP 응답 메시지의 헤더를 다음과 같이 설정해주었다.

response.setContentType("text/html");
response.setCharacterEncoding("utf-8");

 

서블릿 로직을 보면 전송 버튼 눌렀을 때 /servlet/members/save 호출

 

호출되면 호출 성공 메시지와 함께 저장한 member의 정보를 보여준다.

 

회원 저장 성공!
회원 목록을 위한 서블릿

 

 

서블릿만으로 회원 저장 애플리케이션을 구현해보았다.

 

개발함에 있어 불편했던 점은 w.write()로 HTML 코드를 넣어주어야 했던 거.

 

즉, 자바 코드를 이용해서 HTML을 만들어내야했다. 매우 불편..!

 

조금 더 편리하기 위해 등장한 것이 바로 템플릿 엔진( JSP, Thymeleaf, ... )이다.

 

템플릿 엔진을 이용하면 반대로 HTML 코드에 자바 코드를 넣을 수가 있어 편리하다.

 

HTML 문서 중 필요한 부분만 자바 코드를 이용해 동적으로 변경할 수 가 있다는 것이다.

 

템플릿 엔진 중 JSP 는 현재 시점에 다른 템플릿 엔진에게 밀렸지만, 고전도 다뤄봐야하기 때문에

위의 웹 애플리케이션을 JSP를 이용하여 구현해보았다.

 

 

* 회원관리 웹 애플리케이션 - JSP

 

JSP를 이용하기 위해 build.gradle에 다음과 같이 라이브러리를 추가 해줬다.

 

//문서 첫 줄에서 JSP 파일임을 알린다
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

//JSP 파일 내에서 자바 코드를 사용할 때는 다음과 같이 <%로 둘러싼다
//로직
<% Member member = new Member(); %>

// <%= 는 자바 코드를 출력하기 위한
<%= member.getAge() %>

JSP

 

주목해야할 점은 서블릿과 달리 HTML 코드 중심이고, 부분부분 자바 코드를 입력하였다.

 

HTML 을 담기에 훨씬 더 편리하다..!!

 

 

마찬가지로 HTML 사이에 자바의 for Each 반복문 이용

 

JSP를 이용한 웹 애플리케이션 - 회원 저장 성공

 

 

결론 -

JSP를 사용하니 서블릿으로 개발할 때에 비해 HTML 작업을 깔끔하게 가져갈 수 있었고,

동적 변경이 필요한 부분에만 자바 코드를 이용할 수 있었다.

 

* 서블릿과 JSP의 한계

 

JSP를 사용함으로써 서블릿으로만 구현한 애플리케이션의 단점은 어느정도 극복했다.

 

하지만 JSP 코드를 보면, JSP가 너무 많은 역할( java코드, 리포지토리 등등 )을 하고 있다.

 

만약 프로젝트가 조금만 더 커진다면? 매우 복잡하고 힘들어질 것이 분명하다.

 

==> MVC 패턴이 필요한 시점이다.


 다음 학습 내용 

 

서블릿, JSP의 한계를 극복할 MVC 패턴

 

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com