티스토리 뷰

 

 

 

 

 

 

 

 

 

 

▶▶  웹 어플리케이션의 개요

 

 

 

 

 

▶   웹 프로그래밍

–  웹 상에서 사용자와 기업 또는 사용자들간의 연결을 가능하게 하는 프로그래밍 언어.
–  웹 기반의 언어로 가장 먼저 개발된 HTML(HyperText Markup Language)은 
    텍스트 기반의 웹 문서 작성이나 정적인 데이터들을 처리하는 데에는 편하지만, 동적인 데이터를 처리할 수는 없음
–  이러한 한계점을 극복하기 위해 CGI,  ASP,  PHP,  JSP등의 기술이 개발됨.

 

 

 

 

 

 

 

 

 

 

▶   웹 프로그래밍 언어

 

 

▸   CGI (Common Gateway Interface)

–  응용 프로그램과 웹 서버 사이의 정보를 주고받는 방식이나 규약들을 정해 놓은 것.
–  크게 보면 ASP,  PHP,  Perl,  JSP등이 모두 CGI의 범주에 들어감.
–  HTML방식만으로는 동적인 웹 페이지를 만들기 어렵기 때문에,
   서버측에서 동적인 데이터를 처리,  클라이언트에 HTML문서로 전송해 줄 수 있는 응용 프로그램의 필요성으로 개발됨.
–  그러나 초기 CGI 기술과는 다르게 DBMS와의 간편한 연동,  객체 지향적인 특성,  편한 개발 환경 등
    강력한 기능을 갖춘 ASP,  PHP,  JSP의 등장으로 현재의 웹 프로그래밍은 대부분 이를 이용한 것. 

 

 

▸   JSP (Java Server Page)

–  초창기에 서버에서 실행할 수 있는 Java,  즉 서블릿(Servlet)이라는 동적 웹 구현 기술이 있었으나,
    서블릿만으로 웹 프로젝트를 개발하자니 Java에 대한 지식요구,  인터페이스 구현에 너무 많은 비효율적인 코드 등의

    이유로 개발자들이 쉽게 익히기 어려운 언어가 됨.
–  이에 서블릿과 함께 구동함으로써 서블릿의 기능을 그대로 사용할 수 있고,  
    자바 빈즈(JavaBeans),  EJB같은 기술로 보다 강력한 객체지향적 지원이 가능한 JSP라는 기술이 개발됨.
–  JSP는 JSTL을 지원하게 되면서 웹 프로그램의 가독성이 좋아지고,  유지 및 보수가 훨씬 쉬워지는 장점을 가지게 됨.
–  즉,  JSP는 Java를 이용하여 동적인 웹 페이지를 만들 수 있음.

 

 

 

 

 

 

 

 

 

 

▶   프로세스 (Process)  &  스레드 (Thread)

 

 

▸   프로세스 (Process)

–  실행중인 프로그램을 나타내는 말이며 태스크(Task)라고도 함.
–  윈도우와 같이 멀티태스킹을 지원하는 OS에서는 동시에 실행되고 있는 여러개의 프로세스에 대하여 
   CPU와 메모리 자원을 안정되게 분배해 주어야 하며, 이러한 역할은 OS의 성능을 결정하는 데 있어 아주 중요한 요소.

 

 

▸   스레드 (Thread)

–  자원관리에 있어 비효율적인 단점을 극복하고자 나온 기술이 스레드 기반의 서블릿.
–  하나의 프로세스 내에서 해당 프로세스가 할당받은 자원을 공유하며 실행되는 독립적인 작업단위.
–  프로세스의 자원을 참조할 뿐,  새로 할당받을 필요가 없기 때문에 프로세스를 생성하는 것보다 훨씬 빠른 생성 속도를 가짐.
ex )   카톡으로 친구랑 톡을 주고받으며 친구 프로필이 업데이트가 되는걸 거의 동시에 볼 수 있음.
         이는 각각의 기능스레드로 작용하기 때문.

 

 

 

 

 

 

 

 

 

 

▶   웹 어플리케이션 구조 (3–Tier 구조)

–  웹 프로그래밍을 통해 구축된 일반적인 웹 어플리케이션(사이트)클라이언트 / 서버의 방식으로 구축됨.
–  클라이언트(사용자)가 웹브라우저를 통해 어떤 결과를 보여달라는 요청(Request)을 웹 서버에 보내게 되면,
   서버는 그 요청을 받아들여 데이터를 처리한 후 결과를 웹브라우저의 응답(Response)형태로 클라이언트에게 보내고,
   사용자는 웹브라우저를 통해서 그 결과를 받아 보게 됨.

* WAS = Web Application Server

→  클라이언트가 요청하면 Web서버 먼저 만나게 되고, 
     이 때 Web서버는 해당 데이터를 혼자 처리 가능한지 아니면 Was가 필요한지 판단함
→  정적 데이터라면 Web서버에서 바로 응답하여 클라이언트엔게 돌려주게 되고,
      동적 데이터라면 Was한테 정보를 요청하고 다시 받아서 클라이언트에게 응답함.

 

정적 데이터

동적 데이터

이미지, 동영상, HTML문서(홈페이지), CSS, JS등의 
파일 데이터
데이터베이스에서 가져와 처리하는, 
동적데이터 처리가 필요한 모든 데이터 (DB작업)

 

 

   Web서버부터 Was서버까지를 통칭 '서버' 라고 하며, 현재 우리가 배우는 범위에 해당.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

▶▶   JSP와 Servlet

 

 

 

 

 

▶   JSP의 개요

–  브라우저는 기본적으로 HTML형식의 문서만을 표시할 수 있기에 동적인 웹페이지,  
    즉 사용자의 요청에 맞는 결과를 동적으로 표시해주는 웹 페이지를 웹 서버측에서 사용자에게 전송해 주기 위해,
    요청의 처리결과에 따라 자동으로 응답을 생성할 수 있는 역할을 하는 프로그램이 필요함.
–  클라이언트가 JSP페이지 요청을 하면 JSP페이지 코딩 내용이 HTML페이지 형태로 변환되고,
     HTML형태로 변환된 내용이 최종적으로 브라우저에서 해석되어 사용자에게 보여지는 구조.
ex )   현재 시각을 표시해주는 웹 페이지 → 현재 시간이 계속 바뀌어 나타남.

 

 

 

 

 

 

 

 

 

 

▶   Servlet의 개요

–  웹 서버측에서 사용자의 요구에 따라,  
   자동으로 생성된 HTML형식의 페이지를 생산하여 전송해 줄 수 있는 여러 기술 중 Java 진영의 기술이 바로 Servlet.
–  단적으로 말하자면 웹 서버 상에서 실행되는 Java의 클래스 파일이라 할 수 있음.
–  다만 일반적인 Java 클래스와 비교해 볼 때,
   서블릿은 반드시 javax.servlet.Servlet 인터페이스를 구현해서 작성해야 하며,
   입력과 출력을 HTTP 프로토콜의 요청과 응답의 형태로 다룬다는 점이 다름.
–  클라이언트가 요청을 보내오면 웹 서버는 그 요청에 해당하는 서블릿 클래스 파일을 실행,  
   서블릿 클래스에서는 요청을 처리해 결과물을 만들어 내면 웹 서버가 그 페이지를 클라이언트에 전송함.
–  'Server Side Applet' 즉,  서버 사이드의 Java 응용 프로그램이란 뜻.

 

 

 

 

 

 

 

 

 

 

 

▶   HTTP 프로토콜

–  인터넷 통신 프로토콜에는 TCP/IP,  FTP,  SMTP,  HTTP 등 수없이 많은 종류의 프로토콜이 있음.
–  실제 사용자와 연결된 최상위 계층의 프로토콜로, 
   가장 대표적인 것이 웹 브라우저의 통신에 관한 프로토콜 HTTP.

 

 

▸   구조 

–  요청(Request)과 응답(Response)의 형태로 이루어져 있음.

→   각 HTTP 메시지는 지금 작성된 메시지가 요청인지, 응답인지 나타내고,
      요청 URL 등 / 기본적인 정보가 담겨있는 시작 라인,
      수행 날짜 / 서버 정보 / 브라우저 버전 등 / 부가적인 정보를 담는 헤더(Header),
      요청이나 응답에 필요한 내용을 담고 있는 본문(Body)으로 구성됨.

 

 

▸   요청(Request)메시지

–  기본적으로 HTTP 메서드와 접근할 주소(URL) 정보,  서버에 전달할 데이터인 form 파라미터로 구성됨.
–  HTTP 메서드는 클라이언트가 웹 서버가 해야 할 행동을 정해주는 정보라 할 수 있으며,  GET방식과 POST방식이 있음.


1 )   GET

–  전송할 파라미터 값들을 시작 라인의 URL정보에 붙여서 같이 전송함.
–  파라미터의 길이가 256바이트를 넘을 수 없음.
–  본문(Body)이 필요 없으므로 전송 속도가 POST방식에 비해 빠름.
–  데이터가 적을 경우 유용함.

2 )   POST

–  파라미터 값들을 요청 메시지의 본문에 담아 전송하므로 길이의 제약이 없음
–  GET방식의 경우 파라미터가 URL뒤에 붙어 전송되므로 사용자가 확인할 수 있는데 비해,
   POST방식은 파라미터를 사용자가 확인할 수 없으므로 보안상 더 유용한 전송 방식.

 

 

▸   응답(Response)메시지

–  요청에 대한 서벗의 처리 성공 여부를 표시하는 상태 코드(HTTP 404, 500 등) 번호
    웹 서버가 응답해주는 콘텐츠의 타입 정보(텍스트/HTML, 이미지 등), 콘텐츠의 내용으로 구성됨.
–  서블릿 클래스가 요청을 처리해 생성하는 페이지는,  웹 서버에서 응답 메시지의 형태로 작성되어 브라우저에 전송됨.

 

 

 

 

 

 

 

 

 

 

▶   웹 컨테이너 (Web Container)

–  JSP와 서블릿을 사용한 웹 서버는 크게 URL 주소의 해석을 담당하는 HTTP서버와 

   서블릿 클래스,  또는 JSP파일의 실행 요청을 처리해주는 웹 컨테이너로 구성됨.


1 )   HTTP서버는 단순히 어떤 주소(URL)요청이 들어왔을 경우,  
       그 주소에 미리 매핑되어 있는 콘텐츠(HTML파일이나 이미지)를 

       사용자의 브라우저에 응답 형태로 전송하는 역할을 함.
2 )   이 때,  요청된 URL이 서블릿 클래스 또는 JSP파일일 경우,  
        HTTP서버는 이를 웹 컨테이너에서 처리하도록 클라이언트의 요청을 넘겨줌. 
3 )   웹 컨테이너에서는 요청된 URL에 맞는 서블릿 클래스 또는 JSP파일을 실행하여 그 결과를 HTTP서버에 넘겨주고,
       이는 응답 메시지의 형태로 사용자의 브라우저에 전송됨.


→   즉,  웹 컨테이너란,  웹 서버 내부에서 서블릿 클래스 또는 JSP파일을 실행하기 위한 실행 환경을 제공하는 역할.
    ex )   Tomcat,  WebLogic,  Resin

 

 

 

 

 

 

 

 

 

 

▶   서블릿의 동작 원리

1.   사용자의 URL 요청
2.   request, reponse 객체 생성
3.   서블릿 인스턴스와 스레드 생성
4.   service() 메서드 호출과 서블릿 클래스 실행
5.   응답과 스레드의 소멸

 

 

 

 

 

 

 

 

 


🐾 참조 도서 및 사이트 🐾

 

—   JSP 2.3 & Servlet 3.1

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함