Web | Server-Side 처리 과정

  • 웹 서버

    • 인터넷 웹브라우저의 요청이 들어오면 그에 해당하는 웹페이지를 찾아서 보내주는 일을 하는 컴퓨터를 지칭한다.
    • 정확히 표현하면 인터넷 사용자의 URL요청을 받아서 그에 해당하는 웹페이지(HTML문서나 이미지)를 찾아서 다시 웹브라우저로 보내주는 것이다.
  • 웹어플리케이션 서버(WAS)

    • 웹어플리케이션 서버는 웹서버에 웹어플리케이션을 합친 것이다.
    • 우리가 웹페이지를 볼때 화면이 동적일 때가 있을 것이다. 동적이란 말은 이를테면 특정 URL을 요청했을 때 뉴스페이지 같은 곳에서는 각각의 기사에 대하여 다른 기사제목과 내용들이 표시 되는일들을 말하는데 정적인 웹 서버로는 이것을 처리가 불가능하다. 웹 서버가 웹어플리케이션 프로그램을 호출해야 가능한 일이다. JSP같은 기술이 웹어플리케이션의 역할을 담당한다.
1
2
웹 서버 : 정적인 처리 담당 html, 이미지등 ex) Apache
웹 어플리케이션 서버(WAS) : jsp, 서블릿 담당(동적처리) ex) Tomcat
  • 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 처리과정
      JSP 처리과정

  1. 사용자가 브라우저 주소창에 도메인을 입력하면 브라우저는 그 도메인에 해당하는 IP 주소를 찾기 위해서 DNS 서버에 접속한다.
  2. DNS 서버는 도메인에 대한 IP 주소를 알려준다.
  3. IP 주소를 획득한 브라우저는 인터넷에 접속해서 IP 주소에 있는 서버에 HTTP 프로토콜로 요청한다.
  4. 웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다
    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)
  5. 웹서버는 취합한 결과를 기반으로 브라우저가 인식할수 있는 정적페이지(HTML)를 구성하여 웹 브라우저에 전송한다.

Share