본문 바로가기

전체 글428

6장 서블릿/JSP를 활용해 동적인 웹 애플리케이션 개발하기 오랜 기간동안 서블릿(Servlet)과 JSP(Java Server Page)는 자바 진영에서 동적인 웹 애플리케이션을 개발하는데 있어 표준이었다. 하지만 최근에 플레이 프레임워크(https://www.playframework.com 서블릿 표준을 따르지 않으면서 동적인 웹 애플리케이션 개발이 가능하도록 지원하는 프레임워크이다. 플레이는 자바와 스칼라를 지원한다.)와 같이 서블릿 표준을 따르지 않는 기술도 등장하고 있다. 서블릿/JSP는 언제든지 다른 기술로 대체될 수 있다. 따라서 서블릿 사용법을 익혔다면 다음 단계는 서블릿/JSP가 추상화하고 있는 기반 지식을 학습할 필요가 있다. 이미 앞의 실습을 통해 서블릿이 추상화하고 있는 HTTP의 많은 내용을 학습할 수 있었다. 이번 장에서는 4장 실습에서 .. 2025. 4. 12.
5.4.3 템플릿 엔진 최근에는 동적으로 HTML을 생성하기 위해 JSP를 사용하는 대신 템플릿 엔진을 사용하는 것이 일반적이다. JSP와 템플릿 엔진의 역할은 같다. 아직도 많은 곳에서 JSP를 사용하고 있지만 흐름은 템플릿 엔진으로 넘어가고 있다.지금까지 동적인 HTML 생성을 웹 백엔드가 담당했는데 모바일과 같은 다양한 기기의 등장으로 최근 웹 백엔드는 JSON/XML과 같은 데이터만 제공하고 동적인 웹 UI는 클라이언트가 담당하는 방향으로 변해가고 있다. 이 같은 방향으로 발전해 갈수록 JSP에 대한 필요성은 떨어질 수 밖에 없으며, 템플릿 엔진에 대한 필요성은 높아갈 것이다.JSP에 비해 템플릿 엔진이 가지는 장점도 많기 때문에 개발 경험을 쌓는 시작 단계부터 JSP 대신 템플릿 엔진을 활용할 것을 추천한다. 구글에 .. 2025. 4. 11.
5.4.2 서블릿 & JSP, 웹 애플리케이션 서버 서블릿과 JSP는 정말 오랜 역사를 가진 기술이다. 하지만 아직도 자바 웹 애플리케이션 개발에 활용되고 있다. 서블릿, JSP의 많은 내용은 지금 단계에서 몰라도 괜찮다. 하지만 서블릿 컨테이너, 서블릿 라이프사이클, 서블릿 컨테이너와 서블릿의 관계, 서블릿 필터, 스코프, 쿠키와 세션과 관련해서는 반드시 학습할 것을 추천한다. · "Head First Servlet & JSP"(케이시 시에라, 버트 베이츠, 브라얀 바샴 저/김종호 역, 한빛미디어/2009) - 서블릿 컨테이너와 서블릿의 관계를 그림을 통해 잘 설명하고 있다. 정말 오래된 서블릿 책이다. 오래된 버전을 다루고 있어 굳이 구매할 것을 추천하지 않는다. 도서관에서 책을 빌린 후 "2장 웹 애플리케이션 아키텍처, 4장 서블릿이 되어보자"라도 .. 2025. 4. 10.
5.4.1 객체지향 설계와 개발 객체지향 설계뿐 아니라 모든 설계는 짧은 기간 공부한다고 바로 효과를 볼 수 있는 영역이 아니다. 다양한 관점으로 설계해보고 고민한 경험들이 축적되어야만 좋은 설계를 할 수 있다. 따라서 이 부분의 학습은 개발자가 평생 지속적으로 학습해 나가야 할 부분이다. 그만큼 여유를 가지고 접근한다.먼저 초보 개발자도 부담없이 읽을 수 있는 2권의 책을 추천한다. · "객체지향의 사실과 오해"(조영호 저, 위키북스/2015) - 객체지향의 이론적인 내용에 대해 학습할 수 있다. 특히 객체를 설계할 때 각 객체의 역할, 책임, 협력이 중요한데 이와 관련해 초보 개발자도 이해할 수 있도록 예제를 통해 쉽게 풀어내고 있다. · "개발자가 반드시 정복해야 할 객체지향과 디자인 패턴"(최범균 저, 인투북스/2013) - ".. 2025. 4. 9.
5.4 추가 학습 자료 이 장에서는 4장에서 구현한 HTTP 웹 서버를 리팩토링하면서 객체지향 설계와 객체 지향적으로 개발했을 때 얻을 수 있는 이점에 대한 맛을 볼 수 있었다. 또한 이렇게 리팩토링한 웹 서버가 현재 자바 업계의 표준이라 할 수 있는 서블릿 컨테이너, 서블릿과 어떻게 연결되는지에 대해 알아봤다. 이 두 가지 주제와 관련한 추가학습 자료는 다음과 같다.참고도서 : https://roadbook.co.kr/169 [신간안내] 자바 웹 프로그래밍 Next Step● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24.. 2025. 4. 8.
5.3.2 서블릿 컨테이너, 서블릿 앞의 HTTP 웹 서버 리팩토링 과정을 이해했다면 이미 서블릿 컨테이너와 서블릿이 어떻게 동작하는지 이해한 것이나 다를 바 없다.앞의 동영상에서 톰캣 서버를 시작하는 WebServerLauncher 클래스를 살펴보면 다음과 같다. - WebServerLauncher.javapublic class WebServerLauncher { private static final Logger logger = LoggerFactory.getLogger(WebServerLauncher.class); public static void main(String[] args) throws Exception { String webappDirLocation = "webapp/"; Tomcat to.. 2025. 4. 6.
5.3.1 개발 환경 세팅 및 Hello World 출력 다음 2개의 동영상을 참고해 톰캣 서버를 설치하고 "Hello World"를 출력하는 서블릿을 추가해 실행한다. https://www.youtube.com/watch?v=jWVlAclnIXo : Embedded 톰캣 설정하는 방법 https://www.youtube.com/watch?v=xCXw8xmmWC4 : Hello World 출력하는 서블릿을 추가하고, 실행해 보는 과정 톰캣 서버를 활용해 웹 애플리케이션을 개발하는 과정에서 소스코드를 수정한 다음 서버를 재시작해야 하는 경우가 많다. 서버 재시작을 단축키로 할 수 있도록 지원하는 이클립스 플러그인이 있어 소개한다. 설치하고 사용하는 방법은 다음 동영상을 참고한다. https://youtu.be/OdCR6Y4_HAQ : relaunch plugin.. 2025. 4. 6.
5.3 서블릿 컨테이너, 서블릿/JSP를 활용한 문제 해결 앞에서 구현한 웹 서버는 크게 3가지 문제점을 가지고 있다. 이 중 앞의 두 가지 문제점을 해결하기 위해 자바 진영에서 표준으로 정한 것이 서블릿 컨테이너와 서블릿/JSP 이다.서블릿 컨테이너와 서블릿/JSP에 대해 이해하기 위해 앞에서 구현한 웹 서버와 연결해 설명한다. 먼저 서블릿은 앞에서 구현한 웹 서버의 Controller, HttpRequest, HttpResponse 를 추상화해 인터페이스로 정의해 놓은 표준이다. 즉, HTTP의 클라이언트 요청과 응답에 대한 표준을 정해 놓은 것을 서블릿이라 생각하면 된다. 즉 HTTP의 클라이언트 요청과 응답에 대한 표준을 정해 놓은 것을 서블릿이라 생각하면 된다. 서블릿 컨테이너는 이 서블릿 표준에 대한 구현을 담당하고 있으며 앞에서 구현한 웹 서버가 서.. 2025. 4. 5.
5.2.4 HTTP 웹 서버의 문제점 지금까지 HTTP 웹 서버를 직접 구현하고 리팩토링하는 과정에 대해 살펴봤다. 웹 서버를 직접 구현해 봄으로써 HTTP 요청과 응답의 세부 내용에 대해 더 깊이 있게 학습할 수 있는 계기가 되었다. 하지만 지금까지 구현한 웹 서버는 다음과 같은 한계를 가진다. · HTTP 요청과 응답 헤더, 본문 처리와 같은데 시간을 투자함으로써 정작 중요한 로직을 구현하는데 투자할 시간이 상대적으로 적다. · 동적인 HTML을 지원하는데 한계가 있다. 동적으로 HTML을 생성할 수 있지만 많은 코딩량을 필요로 한다. · 사용자가 입력한 데이터가 서버를 재시작하면 사라진다. 사용자가 입력한 데이터를 유지하고 싶다. 물론 위 3가지 외에도 부족한 부분이 많지만 가장 큰 문제점이라고 생각하는 부분만 정리해 봤다.참고도서 :.. 2025. 4. 4.