Don't Panic
in JSP·Servlet ☕ 5분 읽기

[JSP·Servlet] 웹 프로그래밍 기초: WWW·도메인·IP·MVC 패턴

목차

1. 월드와이드웹

1) WWW의 탄생

  • 영국의 팀 버너스리가 ‘하이퍼텍스트(hypertext)’ 개념을 고안
  • 인터넷 공간에서 문서를 쉽게 연결하는 기술을 발표
  • 이것이 월드와이드웹(WWW, World Wide Web) 의 시초가 됨

2) 초창기 웹: 정적 페이지(Static Page)

  • 서버가 클라이언트 요청에 대해 항상 같은 페이지를 반환
    (예: 회사소개, 로고, 약도 등의 정보 제공)
  • 단점: 검색, 로그인, 결제 등 사용자 상호작용 불가능

3) 동적 웹(Dynamic Web)의 등장

  • 사용자 입력에 따라 서버가 다른 정보를 반환
    (예: 로그인 시 개인정보 제공, 검색 결과 반환)
  • ASP, PHP, JSP 등의 웹 프로그래밍 언어 등장

정적 웹에서 동적 웹으로 발전하면서 사용자 맞춤형 서비스가 가능해짐


2. 웹서버와 웹어플리케이션서버

1) 웹서버 (Web Server)

  • 클라이언트 요청을 가장 먼저 받는 서버
  • 정적 콘텐츠 제공 (HTML, CSS, JS, 이미지 등)
  • 요청이 동적 처리가 필요하면 WAS에 위임

2) 웹애플리케이션서버 (WAS)

  • 동적 콘텐츠 처리 (로그인, 검색, 결제 등)
  • 데이터베이스(DB) 또는 외부 시스템과 연동
  • 비즈니스 로직을 실행하고 웹서버에 결과 반환

3) 클라이언트의 종류

  • 서버에 서비스를 요청하고 제공받는 쪽을 클라이언트라고 함
  • 대표적으로 브라우저가 있음
  • 일반적으로 브라우저를 이용해 서버에 정보를 요청하고 서비스를 제공받기 때문에 클라이언트를 브라우저라고 함
  • 브라우저 외에 명령 프롬프트, 스마트폰 앱, FTP 프로그램 등도 모두 클라이언트에 해당
  • 서버에 특정 요청을 보내고 결과를 받는다면 모두 클라이언트라고 볼 수 있음

3. 도메인 (Domain)

1) 도메인이란

  • 도메인(Domain) 이란 인터넷에서 웹사이트의 주소 역할을 하는 문자열을 의미함.
  • 사용자가 브라우저에 입력하면 해당 사이트로 연결됨.

2) 도메인의 구성요소

예시: https://www.naver.com/news

▪ 프로토콜 (Protocol)

  • 예: https://
  • 웹사이트가 어떤 프로토콜을 사용하는지를 나타냄.
    • HTTP (HyperText Transfer Protocol) → 일반 통신
    • HTTPS (HyperText Transfer Protocol Secure) → 보안이 강화된 HTTP로, 데이터를 암호화하여 주고받음.

▪ 서브도메인 (Subdomain)

  • 예: www.
  • World Wide Web을 의미하며, 기술적으로 서브도메인(Subdomain)에 해당함.
  • 서브도메인은 메인 도메인의 하위 주소로, 특정 서비스나 영역을 구분하는 데 사용됨.
    예:
    • blog.naver.com → 블로그 서비스
    • mail.google.com → 메일 서비스

▪ 도메인 이름 (SLD, Second-Level Domain)

  • 예: naver
  • 사용자가 등록한 고유한 이름으로, 브랜드나 조직의 정체성을 나타냄.

▪ 최상위 도메인 (TLD, Top-Level Domain)

  • 예: .com
  • 도메인의 최상위 계층을 의미함.
  • 주요 TLD 예시:
    • .com → 상업용
    • .org → 비영리 단체
    • .net → 네트워크 기관
    • .kr → 대한민국 국가 도메인

▪ 포트 (Port, 선택사항)

  • 웹사이트 주소에서 포트를 명시하지 않으면 기본적으로 80번 포트(HTTP) 를 의미함.
    • 예: http://example.com:8080 → 8080 포트 사용

▪ 경로 (Path, 선택사항)

  • 예: /news
  • 특정 페이지나 리소스의 위치를 나타냄.

▪ 쿼리 스트링 (Query String, 선택사항)

  • 예: https://www.naver.com/search?q=날씨

  • ?q=날씨 부분이 쿼리 스트링(Query String) 이며, 추가적인 요청 정보를 포함함.

  • q 라는 키에 날씨 라는 값을 전달한다는 의미.

  • 여러 개의 데이터를 전달할 경우 & 로 구분함.
    예:

    ?q=날씨&lang=ko

4. IP 주소와 도메인

1) IP 주소란?

  • IP (Internet Protocol) 주소는 인터넷에서 각 기기를 식별하는 숫자 형태의 주소임.

▪ IPv4

  • 예: 192.168.1.1, 223.130.195.200
  • 숫자 4개로 구성, 각 숫자는 0~255 범위.

▪ IPv6

  • 예: 2001:0db8:85a3::8a2e:0370:7334
  • IPv4보다 더 긴 형태로 확장되어, 더 많은 주소를 표현 가능.

2) IP 주소와 도메인의 관계

  • IP 주소 → 컴퓨터가 이해하는 주소
  • 도메인 → 사람이 이해하기 쉬운 주소

동작 과정

  1. 사용자가 브라우저에 www.naver.com 입력
  2. 브라우저가 DNS(Domain Name System) 서버를 통해 도메인을 IP 주소로 변환
  3. 예: www.naver.com223.130.195.200
  4. 해당 서버에 접속하여 웹페이지 표시

일반적으로 IP 주소는 변경될 수 있지만, 도메인은 고정되어 있음.


5. 디자인 패턴 (Design Pattern)

1) 디자인 패턴이란?

  • 소프트웨어 설계 시 자주 발생하는 문제를 해결하기 위한 일반적인 해결 방법을 정리한 것.
  • 개발 과정에서 반복적으로 나타나는 문제들을 효과적으로 해결하기 위한 정형화된 설계 기법임.

2) 디자인 패턴의 필요성

구분설명
코드 재사용성 증가검증된 해결책을 재사용하여 효율적인 개발 가능
유지보수성 향상구조적으로 짜여 있어 수정 및 유지보수가 용이
가독성 및 협업 강화팀원 간 코드 이해가 쉬워지고 협업이 원활해짐
소프트웨어 품질 향상안정적이고 유연한 코드 설계 가능

디자인패턴을 활용하면 코드 품질을 향상시키고, 유지보수를 쉽게 하며, 협업 효율을 높일 수 있습니다.


6. MVC 디자인 패턴 (MVC Design Pattern)

1) MVC 디자인 패턴이란?

  • Model - View - Controller 구조로 프로그래밍하는 설계 방법.
  • 흔히 ’MVC 패턴’ 또는 ’MVC 디자인 패턴’ 이라고 부름.
  • 웹 프로그래밍뿐만 아니라 다양한 소프트웨어 개발 분야에서도 활용됨.

▪ MVC 패턴의 흐름

Client (사용자/브라우저)
↓ ① 요청(Request)
Controller
↓ ② 비즈니스 로직 처리
Model (Database 등)
↓ ③ 결과 데이터 전달
View (화면/UI)
↑ ④ 응답(Response)


2) MVC 패턴의 구성요소

구성요소역할
Model (모델)데이터베이스와 연결 및 비즈니스 로직 처리
View (뷰)화면(UI)을 구성하고 사용자에게 결과를 출력
Controller (컨트롤러)사용자의 요청을 받아 Model과 View를 연결

3) MVC 패턴의 장점

  • 프레젠테이션 로직(View)비즈니스 로직(Model)분리
  • 모듈화되어 개발이 체계적이고 유지보수가 용이
  • 새로운 개발자도 전체 구조를 쉽게 이해 가능

7. Spring MVC

1) 스프링 MVC란?

  • 웹 애플리케이션 개발을 위한 프레임워크
  • MVC 패턴을 기반으로 체계적이고 쉽게 개발할 수 있도록 설계됨

2) Spring MVC의 흐름

  • 클라이언트가 요청을 보내면, DispatcherServlet이 요청을 받아 적절한 Controller로 전달
  • ControllerModel을 처리하고, View를 선택
  • View는 클라이언트에게 결과를 출력

3) Spring MVC 주요 구성 요소

구성요소역할
DispatcherServlet클라이언트의 요청을 분석하여 가장 적합한 핸들러(Controller method)를 찾음
HandlerMapping요청에 맞는 핸들러(Controller method)를 반환
HandlerAdapter해당 핸들러(Controller method)를 실제로 호출
ViewResolver응답에 적합한 뷰(View)를 찾아 반환

참고: MVC 패턴에서 Model은 일반적으로 비즈니스 로직 계층을 의미하지만,
Spring에서는 Service 계층이 이 역할을 담당함.


4) 스프링 MVC 프레임워크를 사용하는 이유

  • 복잡한 설정과 구조는 이미 Spring MVC가 내장하고 있음
  • 개발자는 ControllerView 구현에만 집중 가능
  • DispatcherServlet, HandlerMapping, HandlerAdapter 등은 이미 포함되어 있음
  • 전체적인 구조를 정확히 이해해야 개발 과정에서 문제를 최소화할 수 있음