Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Servlets

Similar presentations


Presentation on theme: "Introduction to Servlets"— Presentation transcript:

1 Introduction to Servlets
weqwe Data Warehousing Lab

2 목차 Servlet 개요 Servlet의 장점과 CGI와의 비교 Servlet기초 간단한 예제들
WEF-INF directory Serverlt lifecycle Data Warehousing Lab

3 1. Servlet 개요 1.1 정의 Request/Response 를 지향하는 service기능을 향상시키기 위한 server side에서 돌아가는 모듈 Web Application Server에 의해서 관리 동적 contents 생성 위한 web component 플랫폼에 독립적인 java class파일로 되어 있다. servlet engine : - java가 탑재된 container, - servlet 의 기능을 제공하는 web server의 확장. Servlet container : - servlet의 lifecycle을 관리 - client의 요청있을 경우 servlet실행시켜 rquest에 대한 response를 처리하는 server module Web application을 구현할 수 있는 방법으로는 cgi, perl, asp, servlet등 여러 가지 방법이 있는데 그 중에서 java언어를 이용한 servlet에 대해서 알아보겠다. 여기서 service라 함은 osi7 layer에서 애플리케이션 레벨의 프로토콜인 ftp, dhcp, http,등을 말한다. Server container: 웹서버 혹은 웹 애플리케이션 서버의 일부분이라고 보면 된다. Data Warehousing Lab

4 1.2 http request, response HTTP는 매우 간단, 지속성 없는 protocol
Data Warehousing Lab

5 1.3 servlet request, response 처리 절차
http request 로딩 여부확인 Client Server Servlet Engine http response 메모리에 없음 메모리에 존재 일반적으로 서블릿은 http를 이용하는 방식이 가장 많이 쓰인다. http servlet을 구현하기 위해서는 httpservlet이라는 클래스를 상속받아 사용한다. 다음의 그림을 보면 http servlet이 어떻게 동작되는지 알 수 있다. 클라이언트가 웹 브라우저를 통하여 servlet을 호출한다. Was가 request를 받아 해당 servlet이 로딩되어 있는지 검토한 후 최초의 request로 servlet클래스가 로딩되지 않았으면 servlet클래스를 로딩하고 servlet클래스가 이미 로딩되어 있다면 과정 생략. Serlvet이 결과를 was에 html형태로 output을 보내준다. Was가 결과값을 클라이언트에 response한다. Servlet 로딩 Init Service output Data Warehousing Lab

6 1.4 servlet API Servlet Interface GenericServlet Abstract Class
2개의 package: javax.servlet javax.servlet.http Servlet Interface 상속 GenericServlet Abstract Class 상속 Genericservlet은 http이외의 프로그램 개발 시에 사용, httpservlet은 http를 이용한 프로그램 개발시에 사용한다. HttpServlet Abstract Class <Servlet Interfact 상속 구조> Data Warehousing Lab

7 Servlet interface 의 methods
void init(ServletConfig config) void init(ServletConfig config) Servlet에 관한 구성정보 ServletConfig getServletConfig) Servlet개발자,명칭등의 정보 String getServletInfo() 서블릿이 생성된 후 초기에 한 번 호출된다. 클라이언트가 요청할때마다 service메소드가 불려진다. Servlet container에 의해서 호출되며 서블릿의 service가 종료되어 완전히 메모리에서 삭제 되어질대 불려진다. 서블릿에 대한 구성정보를 servletconfig의 객체로 리턴된다. 서블릿에 대한 정보가 리턴된다. void service(ServletRequest req, ServletResponse res) void destroy() Data Warehousing Lab

8 Servlet 수행방법 GenericServlet의 상속클래스 request Web application Service()
server client Service() response <GenericServlet의 request 처리 방법> HttpServlet의 상속클래스 request(Get방식) Web application server client Service() doGet() response HttpServlet의 상속클래스 request(Post방식) Web application server Service() client doPost() response <HttpServlet의 request 처리 방법> Data Warehousing Lab

9 2. Servlet의 장점과 CGI 비교 A server server A A
2.1 multi thread and multi process <servlet과 CGI 방식> 2.2 표준 API 코드의 재사용성과 확장성 2.3 객체 지향 언어 Servlet은 java로 이루어진 web programming A server server A A 브라우저 브라우저 브라우저 브라우저 서블릿은 하나의 인스턴스가 생성된 후에 쓰레드로 동작하게 된다. 즉 하나의 프로세스 안에서 여러 개의 멀티 쓰레드가 동작하여 해당 서블릿의 인스턴스를 호출한다는 것이다. 예를 들어 100명의 사용자가 동시에 request를 보냈다면 cgi방식은 100개의 프로세스가 생기지만 서블릿 방식은 하나의 프로세스에서 100개의 쓰레드가 생성된다. 데이터ㅔㅂ이스에 무관한 프로그램을 만든다고 해보자. 서블릿에서는 jdbc라는 표준 api를 이용하여 프로그래밍한다면 데이터베이스와는 독립적인 애플리케이션을 만들 수 있다. Servlet은 자바의 특성상 기존에 나와 있는 객체 지향 언어의 디자인 패턴을 이용하면 소스코드를 많이 수정하지 않아도 바로 적용시킬 수 있다. Cgi는 C언어나 스크립트로 작성된 프로그램의 수정이 전반적으로 이루어져야 할 것이다. Data Warehousing Lab

10 3. Servlet 기초 “ Hello World!”를 출력하는 servlet “안녕하세요!”를 출력하는 servlet
WEB-INF directory Servlet Lifecycle Data Warehousing Lab

11 “Hello World!” 출력 servlet
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } Data Warehousing Lab

12 “안녕하세요!” 출력 servlet import java.io.*; Data Warehousing Lab
import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException { response.setContentType("text/html; charset=EUC-KR"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } Data Warehousing Lab

13 WEB-INF directory Servlet에 관련된 모든 파일들이 존재
해당 servlet클래스를 저장한 후 다음와 같은 URL class name Ex) web.xml에서 URL mapping <servlet> <servlet-name>: servlet이름을 지정 <servlet-class>: servlet클래스를 지정 <servlet-mapping> <url-pattern>: <servlet-name>에서 지정한 servlet이름과 매핑될 URL을 정의 Data Warehousing Lab

14 Servlet Lifecycle Instance Init() Service() Destroy()
객체가 생성될 때 최초에 한번만 호출됨 Service() client에 대한 각각의 thread가 생성되어 service를 호출 Destroy() 객체가 사라짐 서블릿은 클라이언트가 아무리 많이 요청해도 객체를 하나만 생성시키며 각 클라리언트에 대한 수행은 쓰레드가 한다. <Servlet Lifecycle> Data Warehousing Lab


Download ppt "Introduction to Servlets"

Similar presentations


Ads by Google