JSP & Servlet

자바/JSP 2015. 12. 22. 17:09

1. JSP & Servlet

- Sun Microsystems에서 웹 개발을 위해 만든 표준이 서블릿(servlet)이다.

- 서블릿 규약에 따라 만든 클래스를 서블릿이라고 부른다.

- 서블릿은 실행 코드 방식에 속한다. (코드를 수정하고 컴파일하고 클래스를 알맞은 곳에 복사해 주는 작업을 반복)

- 서블릿의 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만들었다. (코드를 수정하면 바로 변경 내역이 반영)

- JSP 표준은 서블릿 표준을 기반으로 만들어져, 내부적으로 JSP 파일이 번역되면 최종 결과물로 서블릿이 만들어진다.

- 이 두 표준은 쌍으로 발전하고 있다. (Servlet 2.3 & JSP 1.2), (Servlet 2.4 & JSP 2.0), (Servlet 2.5 & JSP 2.1)


2. 서블릿(Servlet)

- 자바를 기반으로 하는 웹 어플리케이션 프로그래밍 기술이다.

- 썬마이크로시스템즈사에 의해 개발되었고, JCP(Java Community Process)로 이관되어 발전되었다.

- 자바 클래스 형태로 웹 어플리케이션을 작성한다. 이것을 서블릿 클래스라고 한다.

- javax.servlet 패키지에 속하는 Servlet 인터페이스를 구현하도록 만들어야 한다. (번거로워서 javax.servlet.http.HttpServlet 클래스의 서버클래스를 작성하는 방법이 있다.)

- doGet, doPost 라는 메서드를 선언하고, 그 안에 서블릿 클래스가 호출되었을 때 해야 할 일을 써 넣어야 한다.

- 이 두 메서드는 두개의 파라미터를 받아야 한다. javax.servlet.http.HttpServletRequest 타입, javax.servlet.http.HttpServletResponse 타입이어야 한다.

- java.io.IOException 과 javax.servlet.ServletException을 던질 수 있도록 선언해야 한다.

- 동적 HTML 문서를 생성하기 위해서는 doGet, doPost 메서드의 두 번째 파라미터를 이용해야 합니다.

- 이 파라미터에 대해 getWriter라는 메서드를 호출하면 PrintWriter 타입의 객체가 리턴되는데, print, println, printf 메서드를 호출하여 HTML 코드를 출력할 수 있다.

- 자바가 기반이기 때문에 자바의 장점을 그대로 물려받았다. (플랫폼 독립성, 네트워크 환경 보안 용이, 멀티스레드 기능 지원)

- HTML 코드가 자바 코드 안으로 들어가는 구조는 큰 단점이다.


3. JSP(JavaServer Pages)

- 자바를 기반으로 하는 웹 어플리케이션 프로그래밍 기술이다.

- HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.

- HTML, XML 등 클라이언트가 요청한 문서를 생성하는데 주로 사용된다.

- 서블릿과 반대로 HTML 문서에 자바코드가 삽입되는 구조를 갖는다. ex) <% %>, <%= %>

- 서블릿 클래스와 달리 컴파일 과정이나 등록 과정이 필요 없다.

- 소스 코드를 작성해서 웹서버에 속한 디렉터리에 저장하면 된다.

- 프레임워크와 완벽하게 연동되고, 다른 엔터프라이즈 기술과도 완벽하게 연동된다.


4. 웹 컨테이너(Web Container)

- 웹 어플리케이션을 실행할 수 있는 컨테이너이다.

- 웹 어플리케이션은 JSP와 서블릿으로 구현되므로 컨테이너는 이둘을 포함하고있다.

'자바 > JSP' 카테고리의 다른 글

JSP 디렉티브(Directive)(지시자) - page  (0) 2015.12.22
JSP 페이지의 구성 요소  (0) 2015.12.22
JSP 웹 프로그래밍 기초  (0) 2015.12.22
JSP 내장객체에는 9가지  (0) 2015.12.22
JSP - response 내장 객체  (0) 2015.11.20
블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,