웹 프로그래밍 기초개념

Duckhee·2025년 12월 27일

개발 지식

목록 보기
2/3
post-thumbnail

웹 프로그래밍 기초 개념 정리

웹 개발 공부하면서 정리한 기본 개념들이다.
용어 정의부터 웹 애플리케이션 동작 원리까지 다룬다.


1. 기본 용어 정리

웹 프로그래밍의 기본 구조

웹 프로그래밍은 C/S 방식(Client/Server)으로 동작한다.

  • 클라이언트(웹 브라우저)가 페이지를 요청(request)
  • 웹 서버가 처리 후 응답(response)

주요 개념들

인터페이스(Interface)

  • 두 시스템이 상호 작용할 수 있도록 연결되는 경계
  • 하드웨어, 소프트웨어, 조건, 규약 등을 포괄하는 개념

플랫폼(Platform)

  • 운영체제(OS)가 설치된 개발환경
  • 예: Windows 플랫폼, Linux 플랫폼

프로세스(Process)

  • 메모리 할당을 받은 실행 중인 프로그램
  • 과도한 프로세스는 시스템 성능 저하

스레드(Thread)

  • 프로세스 내의 명령어 블록
  • 별도 메모리 할당 없이 동작
  • 멀티 스레딩으로 성능 향상 가능

컴포넌트(Component)

  • 재사용 가능한 최소 단위의 프로그래밍 부분
  • 모듈 내에서 재사용 가능한 단위
  • 라이브러리, 플러그인 등이 컴포넌트로 구성됨

2. 웹 기술

AJAX (Asynchronous JavaScript + XML)

비동기적 통신으로 클라이언트와 서버 간 데이터 교환

장점: 빠른 정보 전송
방식: 서버 응답 상태와 무관하게 전송 가능

XML (eXtensible Markup Language)

  • 태그를 이용한 데이터 구조 명기 언어
  • 프로그래밍 언어와는 구별됨
  • 주로 데이터 기술용으로 사용

HTTP 특징

  • 비연결성(Connectionless): 응답 후 연결 종료
  • 비상태성(Stateless): 서버 상태와 무관하게 요청

3. 웹 프로그래밍 언어

1. CGI (Common Gateway Interface)

  • 최초로 개발된 동적 웹 페이지 언어
  • 웹 서버와 외부 프로그램 간 정보 교환 규약
  • 대화형(동적) 웹 페이지 작성에 사용

2. ASP (Active Server Page)

  • Microsoft 개발, Visual Basic 기반
  • ActiveX 컴포넌트 사용 가능
  • Windows + IIS 전용
  • 보안 취약 → AJAX로 대체

3. PHP

  • 모든 플랫폼에서 동작
  • C언어 문법과 유사
  • 적은 명령어로 프로그래밍 가능
  • 단점: 컴포넌트 미지원, 보안 취약
  • 소규모 웹사이트, 스타트업에서 주로 사용

4. JSP & Servlet

Servlet

  • Java 기반 동적 웹 페이지 기술
  • 멀티 스레딩으로 요청 처리
  • 자바 코드 안에 HTML 태그 혼재

JSP

  • Servlet보다 자바 코드 의존도 낮음
  • 쉽고 편한 프로그래밍
  • 실행 시 Servlet으로 변환 (최초 1회만)
  • 현재: JSP는 View, Servlet은 Controller 역할

4. 웹 애플리케이션 구조

동작 과정

1. 웹 브라우저 → 웹 서버 페이지 요청
2. 웹 서버 → WAS에 처리 요청
3. WAS ↔ 데이터베이스 연동
4. WAS → 웹 서버 결과 반환
5. 웹 서버 → 웹 브라우저 응답

구성 요소

1. 웹 브라우저

  • 클라이언트, 사용자 작업창
  • IE, Safari, Firefox 등

2. 웹 서버

  • 요청 수신 및 응답
  • WAS에 처리 요청
  • Apache, IIS 등

3. WAS (Web Application Server)

  • 로직 처리 및 DB 연동
  • Tomcat, WebLogic, WebSphere 등

4. 데이터베이스

  • 데이터 저장소
  • Back-end Server
  • Oracle, MySQL, MSSQL 등

5. 웹 애플리케이션 처리 방식

CGI 방식

  • 1개 요청 = 1개 프로세스 생성
  • 프로세스 기반
  • 단점: 많은 부하 발생
요청 → 프로세스 생성 → 처리 → 종료

WAS 방식

  • 1개 프로세스 + 다중 스레드
  • 메모리 절약
  • 대기업/포털 사이트 채택
  • JSP, ASP 모두 WAS 방식
요청 → 스레드 생성 → 처리 (프로세스는 유지)

6. 웹 애플리케이션 구현 방식

1. 실행 코드 방식

미리 컴파일된 프로그램 실행

2. 스크립트 코드 방식

  • 요청 시 코드 번역 후 실행
  • 최초 1회만 번역, 이후 번역된 코드 재사용
  • CGI보다 성능 우수

클라이언트 사이드

  • JavaScript, VBScript

서버 사이드

  • ASP, JSP, PHP

7. JSP & Servlet 심화

JSP의 특징

  • 100% 순수 Java 기반
  • 서블릿 기술 확장
  • DBMS 연동 및 동적 처리 가능

장점
1. 객체 지향적
2. 플랫폼 독립적
3. 네트워크 지향적
4. 보안성 우수
5. 멀티 스레드 지원
6. 친근한 코드

J2EE (Java Enterprise Edition)

컨테이너

  • 웹 컨테이너: Servlet + JSP 실행 환경
  • EJB 컨테이너: Enterprise JavaBean 실행 환경

서비스 API

  • JDBC: 데이터베이스 연결
  • XML: 설정 파일 포맷
  • JTA: 트랜잭션 관리

컨테이너 구성 기술

1. Servlet

  • 서버에서 실행되는 프로그램

2. JSP

  • HTML + Java 코드 + JavaBean 통합
  • Servlet 확장 버전

3. EJB

  • 분산 비즈니스 로직 구현
  • 트랜잭션 안전성 제공

8. HTTP 메소드

주요 메소드

GET

  • HTTP header에 정보 전송
  • URL에 쿼리 노출
  • 256byte 제한
  • 빠른 속도

POST

  • HTTP body에 정보 전송
  • 크기 제한 없음
  • 보안 우수

기타

  • HEAD: 헤더 정보만 요청
  • PUT: 리소스 저장
  • DELETE: 리소스 제거
  • TRACE: 경로 추적
  • OPTIONS: 서버 성능 확인

PUT, DELETE 허용 시 서버 안정성 저하


9. Servlet 동작 원리

핵심 패키지

  • javax.servlet: 프로토콜 독립적
  • javax.servlet.http: HTTP 전용

동작 과정

1. 클라이언트 요청
2. Container가 객체 생성 유무 체크
3. 없으면 객체 생성 (메모리 로드)
4. Thread 생성 (요청당 1개)
5. service() 메소드 호출
6. 결과를 클라이언트에 응답 (text/html)

Container의 역할

  1. 객체 유무 판단 및 생성
  2. Thread 생성
  3. service() 호출
  4. doGet() 자동 호출

주요 메소드

  • service(): 요청 처리 (GenericServlet)
  • doGet(): GET 요청 처리 (HttpServlet)
  • doPost(): POST 요청 처리 (HttpServlet)

10. DD (Deployment Descriptor)

폴더 구조

개발 환경 (Eclipse)

/src              - 서블릿 소스 파일
/build/classes    - 컴파일된 class 파일
/WebContent       - HTML 파일
/WEB-INF/web.xml  - 배포 서술자
/WEB-INF/lib      - 라이브러리

서비스 환경 (Tomcat)

/WEB-INF/classes  - 빌드된 class 파일
/WEB-INF/web.xml  - 배포 서술자
/WEB-INF/lib      - 라이브러리

web.xml의 역할

  • 서버 시작 시 메모리 로딩
  • 클라이언트 요청을 서블릿에 매핑

설정 가능한 항목

  • ServletContext 설정
  • Session 유지 시간
  • Servlet/JSP 정의 및 매핑
  • MIME Type 매핑
  • Welcome File 목록
  • Error Pages 처리
  • 리스너/필터 설정
  • 보안 설정

마무리

웹 프로그래밍의 기초 개념과 동작 원리를 정리했다.
특히 Servlet과 JSP의 차이, 웹 애플리케이션의 처리 방식을 이해하는 게 중요하다.

profile
🌈 I Love DE🌈

0개의 댓글