프론트 컨트롤러 패턴 소개 이전 챕터(서블릿, JSP, MVC패턴)에서 사용한 MVC 패턴의 한계점인 공통 처리가 힘들다는 부분을 해결하기 위해서 프론트 컨트롤러 패턴을 사용한다. 프론트 컨트롤러 패턴은 서블릿 하나로 클라이언트의 요청을 받아 이 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해주는 역할을 함으로써 공통 영역을 한군데 몰아넣을 수 있다. 그렇게 함으로써 여러 컨트롤러에 산재되있던 공통 코드를 프론트 컨트롤러 하나로 모을 수 있고, 더하여 프론트 컨트롤러를 제외하면 서블릿을 상속해서 구현해줄 필요도 없다. 현재 스프링 웹 MVC의 DispatcherServlet도 이 FrontController 패턴으로 구현되어 있다. 기존의 MVC Pattern만 적용한 상태 공통 코드가 모든 컨트..
MVC 패턴 - 개요 변경의 라이프 사이클 사실 이게 정말 중요한데, 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI 를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 이렇게 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. (물론 UI가 많이 변하면 함께 변경될 가능성도 있다.) 기능 특화 특히 JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 이 부분의 업무만 담당하는 것이 가장 효과적이다. Model View Controller MVC는 Model, View, Controller의 약자이며, 각 레이어간 기능을 구분하는데 중점..
정적 리소스 프로그램 실행시 변경되는 정보가 거의 없는 자원이다. 고정된 HTML파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달. 웹 브라우저 : HTML 해석 HTTP API HTML이 아니라 주로 데이터를 전달 주로 JSON 형식 사용 다양한 시스템에서 사용 다양한 시스템에서 활용가능 데이터만 주고 받는다. UI 화면이 필요하면, 클라이언트가 별도 처리 앱, 웹 클라이언트, 서버 to 서버 주로 JSON 형태로 데이터 통신 UI 클라이언트 접점 앱 클라이언트(아이폰, 안드로이드, PC 앱) 웹 브라우저에서 자바스크립트를 통한 HTTP API 호출 React, Vue.js 같은 웹 클라이언트 서버 to 서버 주문 서버 -> ..
쓰레드 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.(출저: 위키백과) 쓰레드에서 서블릿 객체를 호출해준다. 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 쓰레드를 하나만 사용할 경우 생기는 문제 하나의 웹 브라우저에서 요청1을 한 상황에서 쓰레드가 요..
자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. HTML Form 데이터 전송 POST 전송 - 저장 서버에서 처리해야 하는 업무 웹 애플리케이션 서버 직접 구현 대략적인 웹 브라우저의 요청에서 응답까지 WAS에서 수행되야하는 과정인데, 너무 복잡하다. 매번 서버를 구축해줄때마다 위 과정을 구현하려면 골치가 아프다. 그래서 서블릿(Servlet) 이라는 게 나온다. 이 서블릿을 지원하는 WAS에서 위의 여러 번거로운 과정을 모두 자동화해서 제공해준다. 그래서 우리는 공통적이고 번거로운 여러 작업을 무시하고 의미있는 비즈니스 로직 실행에만 집중할 수 있다. 서블릿 요즘 사용되는 약간 최신 스타일의 서블..
웹 - HTTP 기반 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE 위키백과 NGINX : Nginx(엔진 x라 읽는다)는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. APACHE : 아파치 HTTP 서버(영어: Apache HTTP Server)는 아파치 소프트웨어 재단에서 관리하는 오픈 소스, 크로스 플랫폼 HTTP 웹 서버 소프트웨어다...