웹 서버
- 인터넷 웹브라우저의 요청이 들어오면 그에 해당하는 웹페이지를 찾아서 보내주는 일을 하는 컴퓨터를 지칭한다.
- 정확히 표현하면 인터넷 사용자의 URL요청을 받아서 그에 해당하는 웹페이지(HTML문서나 이미지)를 찾아서 다시 웹브라우저로 보내주는 것이다.
웹어플리케이션 서버(WAS)
- 웹어플리케이션 서버는 웹서버에 웹어플리케이션을 합친 것이다.
- 우리가 웹페이지를 볼때 화면이 동적일 때가 있을 것이다. 동적이란 말은 이를테면 특정 URL을 요청했을 때 뉴스페이지 같은 곳에서는 각각의 기사에 대하여 다른 기사제목과 내용들이 표시 되는일들을 말하는데 정적인 웹 서버로는 이것을 처리가 불가능하다. 웹 서버가 웹어플리케이션 프로그램을 호출해야 가능한 일이다. JSP같은 기술이 웹어플리케이션의 역할을 담당한다.
|
|
JSP(Java Server Pages)
- JSP 는 자바 Servlet 기술을 확장시켜 웹 환경 상에서 자바만으로 서버 사이드 모듈을 개발하기 위한 기술이다.
- JAVA기반으로 만들어서 JAVA의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다.
- ASP, PHP 처럼 HTML 태그 사이 사이에 동적인 contents 생성 을 담당할 JAVA 코드가 들어 있는 형태로 Servlet 의 형태와 다른 모습을 취하고 있다.
- 커스텀 태그를 만들어 사용할 수 있으며, JSTL(JSP Standard Tag Library)과 같은 태그 라이브러리를 이용할 수 있어 개발이 용이하다.
- 서블릿으로 컴파일된 후 메모리에서 처리되기 때문에 많은 사용자의 접속도 원활하게 처리할 수 있디.
- Java Beans를 이용해 JSP 또는 다른 서블릿 간의 데이터를 쉽게 공유 할 수 있다.
Servlat(Server + Applet)
- JAVA를 이용한 서버 프로그래밍 기술이다.
- JAVA 언어를 기반으로 동적인 contents 를 생성하는 기술로 JAVA 프로그램을 작성하는 형식과 거의 같다.
- JAVA 코드 안에 HTML 태그가 섞여 있어 작업에 대한 분리적인 측면으로 볼 때 효율성이 떨어진다.
- 프로그래머가 프로그래밍하기 어려우며 수정하기 어려운 단점이 있다.
JSP와 서블릿 차이
- JSP는 HTML과 같은 일반적인 텍스트 파일 구조
- 서블릿은 자바 소스로 작성된 클래스 파일 구조
JSP는 서블릿 컨테이너에 의해 서블릿 형태의 자바 소스로 변환되어 클래스로 컴파일 됨
서블릿 컨테이너
- 서블릿 컨테이너는 서블릿을 실행하고 JSP를 서블릿 코드로 변환하는 기능을 수행
변환된 JSP의 서블릿 클래스를 실행하고 웹 서버의 메모리에 적재하고 사용자 요청에 따라 실행
예: Tomcat, WebLogic, JBoss, Jetty 등HTTP 서버
- URL 주소를 해석 하는 역활
- HTTP 서버는 단순히 어떤 주소(URL) 요청이 들어왔을 경우 그 주소에 미리 매핑되어 있는 콘텐츠(HTML 파일이나 이미지 등)를 사용자의 브라우저에 응답 형태로 전송하는 역할을 한다. 이 때 만일 요청된 URL이 서블릿 클래스 또는 JSP파일(ex. http://www.sevlet.com/servlet 또는 http://www.servlet.com/home.jsp)일 경우 HTTP 서버는 이를 웹 컨테이너에서 처리하도록 클라이언트의 요청을 넘겨준다.
- 웹 컨테이너(Web Container)
- 서블릿 클래스 또는 JSP 파일의 실행 요청을 처리해주역할
- 웹 컨테이너에서는 요청된 URL에 맞는(미리 설정된) 서블릿 클래스 또는 JSP 파일을 실행하여 그 결과를 HTTP 서버에 넘겨주게 되고 이는 응답 메시지의 형태로 사용자의 브라우저에 전송된다.
JSP 처리과정
- 사용자가 브라우저 주소창에 도메인을 입력하면 브라우저는 그 도메인에 해당하는 IP 주소를 찾기 위해서 DNS 서버에 접속한다.
- DNS 서버는 도메인에 대한 IP 주소를 알려준다.
- IP 주소를 획득한 브라우저는 인터넷에 접속해서 IP 주소에 있는 서버에 HTTP 프로토콜로 요청한다.
웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다
4-1. HTML인 경우와 JSP인 경우 구분하여 처리한다.
4-2. HTML인 경우 HTML, CSS 등등 추가적인 행위가 필요없는 정적인 파일을 찾아서 사용자에게 전달한다.
4-3. JSP인 경우 웹 서버의 서블릿 컨테이너를 이용한 처리 과정이 필요하다.
[서블릿 컨테이너를 이용한 처리 과정]- 찾은 파일을 서블릿으로 파싱한다.(hello.jsp -> helloServlat.java)
- 만약 이미 변환 되어있는 파일이 있다면 그 파일을 바로 실행한다. (helloServlat.class)
- 이전에 요청했던 페이지일 경우 파싱할 필요 없이 파싱했던 클래스파일을 메모리에 적재한다.
- 서블릿 파일을 실행가능한 class파일로 컴파일 한다. (helloServlat.java -> helloServlat.class)
- 클래스 파일은 메모리에 적재가 되어 실행된다.
- 컴파일된 .class는 컴퓨터에서 실행할 수 있는 형태로 특정한 기능을 수행할 수 있게 된다. 이후 소스 변경 전까지 해당 파일은 메모리에 상주하면서 다시 컴파일 되지 않고 서비스된다.
- 데이터베이스 처리 혹은 별도의 기능을 위한 클래스 호출 등이 있다면 실행하고 결과를 취합한다. (Java Beans)
웹서버는 취합한 결과를 기반으로 브라우저가 인식할수 있는 정적페이지(HTML)를 구성하여 웹 브라우저에 전송한다.