ABOUT ME

개발 공부를 위한 블로그입니다. https://github.com/youngjaekim22

Today
Yesterday
Total
  • CHARPTER 01. JSP 웹 프로그래밍
    Web/JSP 2024. 9. 4. 00:19

    웹 프로그래밍의 개요

    웹 프로그래밍(Web Programming)은 사용자가 웹 브라우저를 통해 필요한 정보를 서버에게 요청하면 서버는 요청한 정보를 데이터베이스(DB)에서 발췌하여 요청한 사용자에게 해당 정보를 제공하는 유기적인 관계로 이루어지는 웹 프로그램의 구동을 의미한다.

     

    웹프로그래밍의 구동 순서

    1. 서비스 요청

    2. URL주소 입력

    3. 서버 접속

    4. DB 접속

    5. 테이블 검색

    6. 관련 정보 발췌

    7. 서비스 전송

    8. 서비스 제공

    9. 요청한 서비스 활용

     

    웹 애플리케이션

    웹 애플리케이션(Web Application)이란 소프트웨어 공학적 관점에서 살펴보면 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 의미한다.

     

    웹 서버와 클라이언트

    웹 애플리케이션을 활용할 수 있는 환경을 구축하기 위해 반드시 필요한 존재는 웹 서버와 클라이언트이다.

    웹서버

    웹 서버(Web Server)란 네트워크 환경에서 사용자에게 웹 페이지를 나타내는 파일들을 제공하고 관리하는 프로그램을 의미한다.

    클라이언트

    클라이언트(Client)란 네트워크 환경에서 서버 시스템과 연결하여 주된 작업이나 정보를 웹 서버에게 요청하고 그 결과를 돌려받는 컴퓨터 시스템을 의미한다.

    클라이어트와 호스트

    행위 주체인 개인 PC를 클라이언트라고 하며 다른 표현으로는 '호스트'라고도 분린다. 호스트(Host)란 네트워크를 구성하는 컴퓨터 시스템에서 각각의 단말기로부터의 자료 처리 요구를 받아 처리하는 중심이 되는 컴퓨터를 의미한다.

    라우터

    라우터(Router)란 서로 다른 네트워크를 연결해 주는 장치를 의미한다.

     

    HTTP 프로토콜

    HTTP(Hypertext Transger Portocol)는 인터넷에서 사용자가 웹 애플리케이션 서비스를 요청하고 웹 서버는 사용자로부터 요청받은 해당 서비스를 제공해 주는 과정을 원활하게 수행하기 위한 제반 요건을 표준화한 프로토콜을 의미한다.

    HTTP는 인터넷 환경에서 서비스를 요청하고 요청받은 서비스를 제공받는 과정에서 발생할 수 있는 여러 가지 문제점들을 해결하기 위해 지정한 약속을 의미하며 우리말로 해석하면 '통신 표준 규약'이라고 한다.

    웹 서버의 역할

    컴퓨터 사용자로부터 특정 서비스를 요청받게 된 웹 서버는 HTTP 프로토콜에서 지정한 통신규약에 따라 요청한 해당 서비스(웹 애플리케이션)를 제공해 줍니다. 이와 같은 과정을 원활하게 수행하기 위해서는 웹 브라우저 주소창에  URL(도메인 주소)을 입력해야 한다.

     

    HTTPS 프로토콜

    HTTPS(Hypertext Transfer Portocol Secure) 프로토콜은 HTTP의 보안이 강화된 버전의 프로토콜을 의미합니다. HTTPS는 소켓 통신에서 일반 텍스트를 이용하느 대신 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화해 주기 때문에 전송되는 데이터에 대해 적절한 보호를 보장해 준다. 보호의 수준은 웹 브라우저에서의 구현 정확도와 서버에 설치된 소프트웨어 및 지원하는 암호화 알고리즘의 성능에 의해 보안의 강도가 결정된다.

     

    SSL과 TLS에 대한 이해

    SSL(Secure Sockets Layer)은 정보통신 자체 서명된 인증서를 통해 인증과 데이터 암호화를 제공하는 보안 소켓 계층의 한 유형을 의미한다. 그리고 TLS(Transport Level Security)는 정보 통신 암호 기법을 사용하여 인터넷에서 종단 간의 인증과 통신 보안을 제공하는 표준 프로토콜을 의미하며 네트워크에서 클라이언트와 서버 간의 도청, 메시지 위조 따위를 방지하도록 설계된 방식으로 통신하도록 규정되어 있다.

     

    TCP/IP 프로토콜

    인터넷 환경에서 웹 서버와 웹 클라이언트 사이에서 필요한 서비스를 주고받기 위해 TCP/IP 프로토콜을 사용한다. TCP는 데이터 전송을 위한 통신규약을 수행하고 IP는 정보를 전달하고자 하는 최종 목적지 주소를 의미한다.

     

    TCP/IP의 역할

    TCP는 인터넷에서 전송되는 정보나 파일들을 일정한 크기의 패킷들로 나누어 네트워크 환경의 수많은 노드들의 조합으로 생성되는 경로들을 거쳐 분산적으로 전송한다.

    IP는 데이터를 전송할 때 누구에게 전송할 것인지를 명확하게 최종 목적지를 구분하여 전달하는 인터넷상의 주소를 구분하기 위해 사용된다.

     

    리피터 장치의 역할

    리피터(Repeater)는 네트워크 환경에서 정보통신 개방형 참조 모델로 원거리에 위치한 호스트에서 전송 데이터의 신호가 약해지지 않고 데이터가 안정적으로 전송될 수 있도록 물리적인 네트워크망의 길이를 확장해 주는 장비이다.

     

    IP 주소의 독립성 확보

    네트워크 환경에 접속된 수많은 호스트 중에서 특정 호스트만을 명확하게 구분하기 위해 IP 주소는 중복된 주소를 허용하지 않기 때문이다.

     

    서블릿의 이해

    서블릿(Servlet)이란 서블릿 규약에 따라 제작된 클래스로 서버에서 웹페이지 등을 동적으로 생성하거나 전송되는 데이터 처리를 수행하기 위해 Java로 작성된 프로그램을 의미한다. 서블릿을 실행하기 위해서는 먼저 환경을 구축해야 한다. 서블릿 실행환경을 구축하기 위해서는 웹 컨테이너 혹은 서블릿 컨테이너로 불리는 아파치 톰캣(Apache Tomcat) 또는 IBM 웹 스피어(Web Sphere)나 애플리케이션 서버, 레진(Resin)등이 필요하다.

    웹 서버가 외부 프로그램을 실행시키는 표준화된 방법인 CGI(Commom Gateway Interface) 방식보다 서블릿을 사용하게 되면 CGI에 비해 훨씬 효율적으로 웹 애플리케이션을 활요할 수 있다. 서블릿의 경우 메모리에 상주하여 클라이언트로부터 서비스 요청이 발생하게 되면 프로세스(Process)보다 작은 스레드(Thread)를 시작하기 때문이다. 서블릿은 Java로 작성되어 있으므로 다양한 플랫폼에서 사용할 수 있다.

     

    프로세스와 스레드

    프로세스(Process)란 컴퓨터에서 실행 중인 프로그램(작업 또는 Task)을 의미하고 스레드(Thread)란 다중 작업 환경에서 운영체제가 여러 프로그램을 병합하여 처리할 때 효율적인 처리를 위한 처리 단위를 의미한다.

     

    웹 컨테이너

    웹 컨테이너(Web Container)는 웹 서버의 컴포넌트 중 하나로 Java 서블릿과 상호작용을 수행한다. 웹 컨테이너는 서블릿의 생명주기를 관리하고 URL과 특정 서블릿을 맵핑하여 URL 요청이 올바르게 접근할 수 있도록 권한을 보장한다. 순수 서블릿을 처리하는 경우 서블릿 컨테이너라고 하지만 서블릿 컨테이너를 포함한 JSP, HTTP 서버의 기능도 함께 포함하기 때문에 웹 컨테이너라고 부른다.

     

    웹 컨테이너의 역할

    웹 컨테이너는 웹 컴포넌트 또는 Java EE(Enterprise Edition) 아키텍처 제약을 구현하고 보안, 병행성, 생명주기 관리, 트랜잭션, 배포 등 다른 서비스를 포함하는 웹 컴포넌트의 실행환경을 제시한다.

     

    JSP와 서블릿 동작 원리

    JSP(Java Server Page)는 서블릿의 단점을 보완하기 위해 스크립트 방식을 도입하여 Sun 회사에 의해 개발되었다.

     

    JSP를 배우는 이유

    JSP를 간단하게 요약한다면 HTML 파일 내에 Java 언어를 삽입한 문서이고 서블릿은 Java 언어로 이루어진 웹 프로그래밍 문서라고 이해할 수 있다.

     

    JSP를 배우는 이유와 중요한 장점

    1. 독립된 플랫폼을 제공하는 Java 언어를 기반으로 작성된다.

    2. Java 언어에 대한 전문 지식이 없더라도 쉽고 빠르게 배울 수 있다.

    3. 웹 애플리케이션 개발에 필요한 각종 프레임워크를 완벽하게 지원한다.

    4. 보안을 중요하게 요구하는 금융권에서 많이 사용된다.

    5. 다른 엔터프라이즈 기술과 완벽한 호환성을 제공한다.

Designed by Tistory.