'jsp'에 해당되는 글 2건

  1. 2007/10/31 웹 콘터이너 (Web Container)
  2. 2007/10/31 서블릿(Servlet) 이란? (12)

웹 콘터이너 (Web Container)

Study/Web programing 2007/10/31 16:12 posted by 전중

* 웹 컨테이너 (Web Container)

 

JSP와 서블릿을 이용하는 웹 응용프로그램은 자바 언어를 이용해서 작성할 수 있으며, JSP와 서블릿을 실행시킬 수 있는 소프트웨어를 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고 한다. 대표적인 웹 컨테이너로는 자카르타 톰캣, Resin, 웹로직 등이 있다.

 

웹 컨테이너는 웹 응용프로그램을 위해 보안, 병행성 관리, 라이프 사이클 관리 등의 서비스를 제공한다.

 

1)      보안(Security)
사용자 인증과 제한된 사용자만 접근할 수 있도록 지원


2)      병행성 관리(Concurrency Management)
여러 개의 작업이 동시에 이루어지는 경우에 쓰레드를 통해서 작업이 보다 효과적으로 이루어지도록 지원


3)      라이프 사이클 관리(Life Cycle Management)
웹 응용프로그램이 생성되고, 실행되고, 삭제되는 라이프 사이클 전 과정을 지원


* WAR(Web Application aRchive)

 

서블릿으로 작성된 웹 응용프로그램의 클래스 파일은 J2SDKjar 명령어를 이용해서 패키징(Packaging)될 수 있고, 이렇게 패키징된 웹 응용프로그램을 WAR(Web Application aRchive)라고 한다. WAR 파일은 확장자가 .war이다. .war 파일은 .jar 파일과 실질적으로 같지만, 일반 JAR 파일과 구분하기 위해서 .war 확장자를 사용한다. WAR 파일로 패키징된 웹 응용프로그램은 표준을 따르는 웹 컨테이너라면 어느 것에서나 실행이 가능하다. , 자카르타 톰캣에서 작성된 웹 응용프로그램을 웹로직에서도 그대로 실행이 된다.

 

* 웹 응용프로그램 디렉터리 구조

 

JSPServlet으로 작성한 웹 응용프로그램은 디렉터리 구조와 배치 기술서(Deployment Descriptor)가 표준화되어 있기 때문에 이를 따른다면 일단 작성된 웹 응용프로그램이라면 어떤 웹 컨테이너에서도 실행이 된다. 웹 응용프로그램이 다음과 같은 디렉터리 구조를 갖는 경우에 myapp는 웹 응용프로그램의 이름이고, myapp 디렉터리는 웹 응용프로그램의 최상위 디렉터리가 된다.

 


 

같은 웹 응용프로그램에 소속된 서블릿과 JSP 프로그램들을 공통된 실행 환경을 서로 공유한다. 이러한 환경을 컨텍스트(Context)라고 하고, 이 컨텍스를 통해서 웹 응용프로그램 소속된 서블릿과 JSP는 서로 데이터를 공유할 수 있다. 이러한 컨텍스트는 ServletContext라는 인터페이스로 표현된다


출처 : http://4rang.tistory.com/246

서블릿(Servlet) 이란?

Study/Web programing 2007/10/31 16:01 posted by 전중

@ 서블릿(Servlet)의 개요

 

서블릿은 멀티쓰레딩에 의해 사용자 요구를 처리하고 가공해서 이에 대한 결과를 내보내게 된다.

 

JSP와 서블릿은 같은 처리 구조를 가진다. 처리 과정에 있어서 JSP는 실행시 서블릿으로 변환된다. 그렇기 때문에 수행 속도는 별차이 없다.

 

차이점은 서블릿이 자바 코드에 의존적이라면 JSP는 자바 코드에 대해 덜 의존적이라 프로그래밍 하기가 더 쉽고 편하다.

 

서블릿과 JSP는 상호 연계 되어 JSP에서 정적인 부분을 담당하고, 서블릿은 보다 동적인 처리를 위한 부분으로 사용되어 보다 효율적인 웹 사이트 구성을 할 수 있다.


  JSP : 주로 사용자용 뷰(View)의 구현에 사용된다.

  Servlet : 사용자용 뷰와 프로그램 로직 사이를 제어해 주는 역할에 주로 사용된다.



@ Servlet의 동작 원리


포함해야 할 패키지

  - javax.servlet : 프로토콜에 독립적인 서블릿을 만들기 위한 클래스를 제공한다.

  - javax.servlet.http : HTTP 프로토콜의 고유한 기능(GET, POST 등)을 제공하는 서블릿을 만드는 클래스를 제공한다.


모든 서블릿은 javax.servlet.Servlet 인터페이스를 implement 해야 한다.


서블릿은 웹브라우저에 의해 실행되므로 main() 메서드를 가지지 않는다. 대신, 서버가 서블릿에 요청을 전달할 때마다 서블릿의 service() 메소드가 호출된다.


사용자 삽입 이미지



 - 서블릿의 요청과 응답의 과정

  1. 클라이언트의 서비스 요청이 오면 객체 유무 체크

  2. Yes면 생성 안함, No 면 객체 생성 (메모리에 로드)

  3. Invoker를 실행한다.

     Thread를 하나 만들어 준다. - 작업용 request 마다 1개씩

  4. Invoker 에서 생성된 Thread에서 service 메소드 (reponse의 내용이 담김)를 호출

     Thread의 run 메소드와 유사, 클라이언트당 1개씩 생성

  5. 결과를 클라이언트에 보낸다. 웹 브라이져의 mime type는 text/html이다.


 - 서블릿의 요청과 응답의 과정에서 Container (Tomcat)가 하는 일

 1. 객체가 있는지 유무 판단, 없으면 생성

 2. Thread 생성

 3. Service() 호출

 4. Service() (HttpServlet 의 메소드)가 doGet() 자동 호출


- 서블릿 요청과 응답 과정에서 Service() 메소드가 하는 일

 1. Request가 올 때 마다 doGet()을 호출한다.

 2. doGet()은 HttpServlet 에 의해 지원 받는 몇몇 Service() 중 하나이다.



출처 : http://blog.naver.com/nicekkong/100039025171