목차
-
서블릿(Servlet)
-
서블릿의 단점
-
웹 애플리케이션 개발 시 서블릿의 장점
-
서블릿 주요 클래스
-
HttpServletRequest
-
HttpServletRequest의 주요 메서드
-
HttpServletResponse
-
HttpServletResponse의 주요 메서드
-
HttpServlet의 주요 메서드
-
서블릿의 생명 주기
-
서블릿 초기화 : init() 메서
-
요청/응답 : service() 메서드
-
서블릿 종료 : destroy() 메서드
-
MVC의 개요
-
MVC
-
MVC 패턴의 구성 요소
-
MVC 패턴 구조
-
모델 1
-
모델 2
-
모델 생성하기 : 자바 빈즈 작성
-
컨트롤러 생성하기 : 서블릿
-
뷰 생성하기 : jsp 파일
서블릿(Servlet)
- JSP 이전에 동적인 웹페이지 콘텐츠를 생성하는 기술로 제공
- 자바의 많은 장점 사용할 수 있지만 HTML, CSS 및 자바스크립트 그리고 웹디자인과 연동하기에는 많은 단점
- → JSP 제공하게 됨
- 단, JSP는 서블릿 기반의 웹 프로그래밍 기술로 내부적으로 서블릿으로 변환되어 실행됨
- 단점이 많지만 서블릿의 존재 이유
- JSP에는 없는 서버 측 프로그램의 기능
- 대규모 프로젝트에 사용되는 프레임워크의 기술을 사용
- Servlet = server + applet
- applet : 자바에서 개발한 응용 프로그램을 웹 페이지와 함께 사용자에 보내 질 수 있도록 작게 만든 프로그램
- 애플릿과 다르게 서버에서 실행할 수 있도록 제공하는 프로그램을 의미해서 서블
서블릿의 단점
- HTML 응답을 위해서는 출력문으로 문자열 결합을 사용해야 함
- 서블릿에서 HTML을 포함할 경우 화면 수정이 어려움
- HTML 폼 Form의 데이터 처리가 불편함
- 기본적으로 단일 요청과 응답을 처리하는 구조로 다양한 경로의 URL 접근을 하나의 클래스에서 처리하기 어려움
웹 애플리케이션 개발 시 서블릿의 장점
- MVC 패턴을 쉽게 적용할 수 있고 컨테이너와 밀접한 서버 프로그램 구현 가능
- MVC 패턴 적용 시 컨텐츠와 비즈니스 로직을 분리 가능
- 컨트롤러와 뷰가 역할을 분담
- 서블릿은 컨트롤러, JSP는 뷰
MVC : 모델 , 뷰 , 컨트롤러의 줄임
서블릿 주요 클래스
- HttpServlet : 서블릿을 만들기 위해서는 Http 프로토콜에 최적화되어 있는 HttpServlet 클래스를 상속해 구현해야 함
- HttpServletRequest : 클라이언트가 데이터를 입력하거나 또는 정보에 대한 요청 값을 가지고 있는 클래스
- HttpServletResponse : 클라이언트가 요청한 정보를 처리하고 다시 응답하기 위한 정보를 담고 있는 클래스
HttpServletRequest
- HTTP 프로토콜의 request 정보를 서블릿에 전달하기 위한 목적으로 사용함
- 이때 사용하는 클래스에는 헤더 정보, 파라미터, 쿠키, URL, URI 등의 정보를 읽어 들이는 메서드와 HTTP Body의 Stream을 읽어 들이는 메서드를 가지고 있음
- 서블릿 컨테이너에서 생성되고 클라이언트 요청이 doGet( ), doPost( )로 전달될 때 인자로 함께 전달됨
- 서블릿에서 클라이언트와 연결해 처리할 작업은 모두 HttpServletRequest를 통해야 함
HttpServletRequest의 주요 메서드
HttpServletResponse
- HttpServletRequest와 마찬가지로 클라이언트와 연결된 처리가 가능함
- 다만 클라이언트에서 서버로 전달하는 것과 관련된 것이 아니라 서버에서 클라이언트로 전달하려는 목적을 위한 기능으로 구성됨
- 서블릿 컨테이너는 요청 클라이언트에 응답을 보내기 위한 HttpServletResponse 객체를 생성하여 서블릿에 전달함
- 서블릿은 해당 객체를 이용하여 content type, 응답 코드, 응답 메시지 등을 전송할 수 있음
HttpServletResponse의 주요 메서드
HttpServlet의 주요 메서드
서블릿의 생명 주기
- 서블릿은 컨테이너에 의해 동작하므로 객체의 생성 과정과 종료 과정도 컨테이너 안에서 이루어짐
- 객체의 생성에서 종료에 이르는 과정을 생명 주기(Life cycle)라 함
- 필요에 따라 해당 생명 주기 안에서 적절한 기능 구현해야 함
서블릿 초기화 : init() 메서
- 클라이언트 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인함
- 해당 서블릿이 메모리에 없을 경우에는 서블릿을 메모리에 적재해야 하는데, 이때 서블릿의 init( ) 메서드가 호출되며 각종 초기화 작업을 수행함
- init( ) 메서드는 처음 한번만 실행되므로, 객체가 생성될 때 초기적으로 필요한 기능이 있다면 이 메서드에서 구현함.
- 예) 이 서블릿 페이지에서 필요한 멤버 변수 선언
- 만일 실행 중 서블릿이 변경되는 경우 기존 서블릿은 종료 Destroy되고 다시 시작되면서 init( ) 메서드가 호출됨
요청/응답 : service() 메서드
- 클라이언트 요청이 있을 때 마다 반복되어 호출되는 메서드
- 파라미터로 HttpServletRequest와 HttpServletResponse 클래스 타입인 request와 response 객체가 제공됨
- request : 사용자 요청 처리
- response : 응답 처리
서블릿 종료 : destroy() 메서드
- 컨테이너로부터 서블릿 종료 요청이 있을 때 destroy( ) 메서드를 호출함
- init( ) 메서드와 마찬가지로 한번만 실행되며, 서블릿이 종료되면서 정리해야 할 작업이 있을 때는 destroy( ) 메서드를 오버라이딩해서 구현함
- 예) 서블릿의 서비스가 종료되기 전에 불필요한 자원들(필드 및 스트림 등)을 해제. 실질적으로 사용하는 일은 잘 없음.
MVC
MVC의 개요
MVC
- Model, View, Controller의 약자로, 웹 애플리케이션을 비즈니스 로직, 프레젠테이션로직, 데이터로 분리하는 디자인 패턴
- 웹 애플리케이션에서는 일반적으로 애플리케이션을 비즈니스 로직, 프레젠테이션, 요청 처리 데이터로 분류
- 비즈니스 로직은 애플리케이 션의 데이터, 즉 고객, 제품, 주문 정보의 조작에 사용
- 프레젠테이션은 애플리케이션이 사용자에게 어떻게 표시되는지, 즉 위치, 폰트, 크기
- 요청 처리 데이터는 비즈니스 로직과 프레젠테이션 파트를 함께 묶는 것
MVC 패턴의 구성 요소
- 모델(model): 애플리케이션의 데이터와 비즈니스 로직을 담는 객체
- 뷰(view): 사용자에게 모델의 정보(데이터)를 보여주는 역할. 비즈니스 로직을 포함하지 않으며, 하나의 모델을 다양한 뷰에서 사용
- 컨트롤러(controller): 모델과 뷰 사이에 어떤 동작이 있을 때 조정하는 역할 웹으로부터 받은 요청에 가장 적합한 모델을 생성하는 것을 처리하는 역할과사용자에게 응답하는 적절한 뷰를 선택하여 해당 모델을 전달하는 역할
MVC 패턴 구조
모델 1
- 모델 1은 기존의 JSP로만 구현한 웹 애플리케이션으로, 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.
- JSP 페이지에 비즈니스 로직을 처리하는 코드와 웹 브라우저에 결과를 출력하는 코드가 섞이는 것
- 모델 1에서는 JSP가 핵심 역할을 수행한다.
모델 2
- 모델 2는 클라이언트의 요청 처리, 응답 처리, 비즈니스 로직 처리 부분을 모듈화한 구조
- 웹 브라우저의 요청이 들어오면 모든 처리를 JSP 페이지가 담당하는 모델 1과 달리, 요청에 대한 로직을 처리할 자바빈즈나 자바 클래스인 모델, 요청 결과를 출력하는 JSP 페이지인 뷰, 모든 흐름을 제어는 서블릿인 컨트롤러로 나뉘어 웹 브라우저가 요청한 작업을 처리
- 모델 2에서는 서블릿이 중요한 역할
- 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청하면 웹 서버는 요청을 처리할 수 있는 컨트롤러(서블릿)을 찾아서 요청을 전달한다.
- 컨트롤러(서블릿)는 모델 자바 객체의 메소드를 호출
- 데이터를 가공하여 값 객체를 생성하거나 JDBC(데이터베이스 드라이버)를 사용하여 데이터베이스와의 인터렉션을 통해 값 객체 생성
- 업무 수행을 마친 결과 값을 컨트롤러에 반환
- 컨트롤러는 모델로부터 받은 결과 값을 뷰에 전달
- JSP는 전달받은 값을 참조해서 출력할 결과를 만들어 웹 서버에 전달하고, 웹 브라우저는 웹서버로 부터 결과 값을 받아 화면에 출
모델 생성하기 : 자바 빈즈 작성
- 모델은 웹 애플리케이션의 비즈니스 로직을 포함하는 데이터로 웹 애플리케이션의 상태
- 모델은 데이터베이스에서 데이터를 가져오거나, 웹 애플리케이션에 필요한 서비스를 수행하는 간단한 자바 클래스로 자바빈즈를 의미
- 자바빈즈는 데이터를 담을 멤버 변수인 프로퍼티와 데이터를 가져오거나 저장하는 Getter/Setter( ) 메소드로 구성
컨트롤러 생성하기 : 서블릿
- 서블릿 클래스는 HttpServlet 클래스를 확장하여 생성
- 생성된 서블릿 클래스는 웹 브라우저에서 전송되는 GET 방식과 POST 방식에 따라 각각 doGet( ), doPost( ) 메소드를 통해 요청 작업을 수행한 후 웹 브라우저에 응답
- 페이지 이동하기
- 서블릿 클래스에서 웹 브라우저로부터 요청된 처리 결과를 보여줄 응답 페이지로 이동
- 이때 현재 뷰 페이지에서 이동할 뷰 페이지에 요청 정보를 그대로 전달하며, 뷰 페이지가 이동해도 처음에 요청된 URL을 계속 유지하기 위해 포워딩 방식을 사용
뷰 생성하기 : jsp 파일
- 뷰는 웹 브라우저의 요청을 처리한 결과를 사용자에게 보여주는 JSP 페이지를 의미
- 뷰는 JSP가 제공하는 태그를 사용하여 컨트롤러가 전송한 모델 데이터를 웹 브라우저에 출력
서블릿(Servlet)
- JSP 이전에 동적인 웹페이지 콘텐츠를 생성하는 기술로 제공
- 자바의 많은 장점 사용할 수 있지만 HTML, CSS 및 자바스크립트 그리고 웹디자인과 연동하기에는 많은 단점
- → JSP 제공하게 됨
- 단, JSP는 서블릿 기반의 웹 프로그래밍 기술로 내부적으로 서블릿으로 변환되어 실행됨
- 단점이 많지만 서블릿의 존재 이유
- JSP에는 없는 서버 측 프로그램의 기능
- 대규모 프로젝트에 사용되는 프레임워크의 기술을 사용
- Servlet = server + applet
- applet : 자바에서 개발한 응용 프로그램을 웹 페이지와 함께 사용자에 보내 질 수 있도록 작게 만든 프로그램
- 애플릿과 다르게 서버에서 실행할 수 있도록 제공하는 프로그램을 의미해서 서블
서블릿의 단점
- HTML 응답을 위해서는 출력문으로 문자열 결합을 사용해야 함
- 서블릿에서 HTML을 포함할 경우 화면 수정이 어려움
- HTML 폼 Form의 데이터 처리가 불편함
- 기본적으로 단일 요청과 응답을 처리하는 구조로 다양한 경로의 URL 접근을 하나의 클래스에서 처리하기 어려움
웹 애플리케이션 개발 시 서블릿의 장점
- MVC 패턴을 쉽게 적용할 수 있고 컨테이너와 밀접한 서버 프로그램 구현 가능
- MVC 패턴 적용 시 컨텐츠와 비즈니스 로직을 분리 가능
- 컨트롤러와 뷰가 역할을 분담
- 서블릿은 컨트롤러, JSP는 뷰
MVC : 모델 , 뷰 , 컨트롤러의 줄임
서블릿 주요 클래스
- HttpServlet : 서블릿을 만들기 위해서는 Http 프로토콜에 최적화되어 있는 HttpServlet 클래스를 상속해 구현해야 함
- HttpServletRequest : 클라이언트가 데이터를 입력하거나 또는 정보에 대한 요청 값을 가지고 있는 클래스
- HttpServletResponse : 클라이언트가 요청한 정보를 처리하고 다시 응답하기 위한 정보를 담고 있는 클래스
HttpServletRequest
- HTTP 프로토콜의 request 정보를 서블릿에 전달하기 위한 목적으로 사용함
- 이때 사용하는 클래스에는 헤더 정보, 파라미터, 쿠키, URL, URI 등의 정보를 읽어 들이는 메서드와 HTTP Body의 Stream을 읽어 들이는 메서드를 가지고 있음
- 서블릿 컨테이너에서 생성되고 클라이언트 요청이 doGet( ), doPost( )로 전달될 때 인자로 함께 전달됨
- 서블릿에서 클라이언트와 연결해 처리할 작업은 모두 HttpServletRequest를 통해야 함
HttpServletRequest의 주요 메서드
HttpServletResponse
- HttpServletRequest와 마찬가지로 클라이언트와 연결된 처리가 가능함
- 다만 클라이언트에서 서버로 전달하는 것과 관련된 것이 아니라 서버에서 클라이언트로 전달하려는 목적을 위한 기능으로 구성됨
- 서블릿 컨테이너는 요청 클라이언트에 응답을 보내기 위한 HttpServletResponse 객체를 생성하여 서블릿에 전달함
- 서블릿은 해당 객체를 이용하여 content type, 응답 코드, 응답 메시지 등을 전송할 수 있음
HttpServletResponse의 주요 메서드
HttpServlet의 주요 메서드
서블릿의 생명 주기
- 서블릿은 컨테이너에 의해 동작하므로 객체의 생성 과정과 종료 과정도 컨테이너 안에서 이루어짐
- 객체의 생성에서 종료에 이르는 과정을 생명 주기(Life cycle)라 함
- 필요에 따라 해당 생명 주기 안에서 적절한 기능 구현해야 함
서블릿 초기화 : init() 메서
- 클라이언트 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인함
- 해당 서블릿이 메모리에 없을 경우에는 서블릿을 메모리에 적재해야 하는데, 이때 서블릿의 init( ) 메서드가 호출되며 각종 초기화 작업을 수행함
- init( ) 메서드는 처음 한번만 실행되므로, 객체가 생성될 때 초기적으로 필요한 기능이 있다면 이 메서드에서 구현함.
- 예) 이 서블릿 페이지에서 필요한 멤버 변수 선언
- 만일 실행 중 서블릿이 변경되는 경우 기존 서블릿은 종료 Destroy되고 다시 시작되면서 init( ) 메서드가 호출됨
요청/응답 : service() 메서드
- 클라이언트 요청이 있을 때 마다 반복되어 호출되는 메서드
- 파라미터로 HttpServletRequest와 HttpServletResponse 클래스 타입인 request와 response 객체가 제공됨
- request : 사용자 요청 처리
- response : 응답 처리
서블릿 종료 : destroy() 메서드
- 컨테이너로부터 서블릿 종료 요청이 있을 때 destroy( ) 메서드를 호출함
- init( ) 메서드와 마찬가지로 한번만 실행되며, 서블릿이 종료되면서 정리해야 할 작업이 있을 때는 destroy( ) 메서드를 오버라이딩해서 구현함
- 예) 서블릿의 서비스가 종료되기 전에 불필요한 자원들(필드 및 스트림 등)을 해제. 실질적으로 사용하는 일은 잘 없음.
MVC
MVC의 개요
MVC
- Model, View, Controller의 약자로, 웹 애플리케이션을 비즈니스 로직, 프레젠테이션로직, 데이터로 분리하는 디자인 패턴
- 웹 애플리케이션에서는 일반적으로 애플리케이션을 비즈니스 로직, 프레젠테이션, 요청 처리 데이터로 분류
- 비즈니스 로직은 애플리케이 션의 데이터, 즉 고객, 제품, 주문 정보의 조작에 사용
- 프레젠테이션은 애플리케이션이 사용자에게 어떻게 표시되는지, 즉 위치, 폰트, 크기
- 요청 처리 데이터는 비즈니스 로직과 프레젠테이션 파트를 함께 묶는 것
MVC 패턴의 구성 요소
- 모델(model): 애플리케이션의 데이터와 비즈니스 로직을 담는 객체
- 뷰(view): 사용자에게 모델의 정보(데이터)를 보여주는 역할. 비즈니스 로직을 포함하지 않으며, 하나의 모델을 다양한 뷰에서 사용
- 컨트롤러(controller): 모델과 뷰 사이에 어떤 동작이 있을 때 조정하는 역할 웹으로부터 받은 요청에 가장 적합한 모델을 생성하는 것을 처리하는 역할과사용자에게 응답하는 적절한 뷰를 선택하여 해당 모델을 전달하는 역할
MVC 패턴 구조
모델 1
- 모델 1은 기존의 JSP로만 구현한 웹 애플리케이션으로, 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.
- JSP 페이지에 비즈니스 로직을 처리하는 코드와 웹 브라우저에 결과를 출력하는 코드가 섞이는 것
- 모델 1에서는 JSP가 핵심 역할을 수행한다.
모델 2
- 모델 2는 클라이언트의 요청 처리, 응답 처리, 비즈니스 로직 처리 부분을 모듈화한 구조
- 웹 브라우저의 요청이 들어오면 모든 처리를 JSP 페이지가 담당하는 모델 1과 달리, 요청에 대한 로직을 처리할 자바빈즈나 자바 클래스인 모델, 요청 결과를 출력하는 JSP 페이지인 뷰, 모든 흐름을 제어는 서블릿인 컨트롤러로 나뉘어 웹 브라우저가 요청한 작업을 처리
- 모델 2에서는 서블릿이 중요한 역할
- 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청하면 웹 서버는 요청을 처리할 수 있는 컨트롤러(서블릿)을 찾아서 요청을 전달한다.
- 컨트롤러(서블릿)는 모델 자바 객체의 메소드를 호출
- 데이터를 가공하여 값 객체를 생성하거나 JDBC(데이터베이스 드라이버)를 사용하여 데이터베이스와의 인터렉션을 통해 값 객체 생성
- 업무 수행을 마친 결과 값을 컨트롤러에 반환
- 컨트롤러는 모델로부터 받은 결과 값을 뷰에 전달
- JSP는 전달받은 값을 참조해서 출력할 결과를 만들어 웹 서버에 전달하고, 웹 브라우저는 웹서버로 부터 결과 값을 받아 화면에 출
모델 생성하기 : 자바 빈즈 작성
- 모델은 웹 애플리케이션의 비즈니스 로직을 포함하는 데이터로 웹 애플리케이션의 상태
- 모델은 데이터베이스에서 데이터를 가져오거나, 웹 애플리케이션에 필요한 서비스를 수행하는 간단한 자바 클래스로 자바빈즈를 의미
- 자바빈즈는 데이터를 담을 멤버 변수인 프로퍼티와 데이터를 가져오거나 저장하는 Getter/Setter( ) 메소드로 구성
컨트롤러 생성하기 : 서블릿
- 서블릿 클래스는 HttpServlet 클래스를 확장하여 생성
- 생성된 서블릿 클래스는 웹 브라우저에서 전송되는 GET 방식과 POST 방식에 따라 각각 doGet( ), doPost( ) 메소드를 통해 요청 작업을 수행한 후 웹 브라우저에 응답
- 페이지 이동하기
- 서블릿 클래스에서 웹 브라우저로부터 요청된 처리 결과를 보여줄 응답 페이지로 이동
- 이때 현재 뷰 페이지에서 이동할 뷰 페이지에 요청 정보를 그대로 전달하며, 뷰 페이지가 이동해도 처음에 요청된 URL을 계속 유지하기 위해 포워딩 방식을 사용
뷰 생성하기 : jsp 파일
- 뷰는 웹 브라우저의 요청을 처리한 결과를 사용자에게 보여주는 JSP 페이지를 의미
- 뷰는 JSP가 제공하는 태그를 사용하여 컨트롤러가 전송한 모델 데이터를 웹 브라우저에 출력