상세 컨텐츠

본문 제목

[서버프로그래밍] 1. 웹 프로그래밍의 이해(개념 정리)

Backend/서버프로그래밍

by 사랑짱 2021. 6. 20. 17:38

본문

 

서버프로그래밍에 대해 알아보기 전 웹에 대한 기본적인 개념들을 정리해보자.

 

◆ 인터넷(Internet)

- 네트워크 기술의 한 종류(Inter + network)

- 전세계의 네트워크가 묶여있는 인터넷 기반 위에서 만들어진 서비스

 

초창기의 네트워크는 특정자원을 LAN(Local Area Network)을 통해 소수의 사람들이

공유할 목적으로 만들어졌으나 이것이 전 세계적으로 확대되어 Internet으로 발전되었다.

즉, 지역범위의 네트워크인 LAN들의 연결을 통해 네트워크 형성된 것이다!!

웹(World Wide Web)

- 인터넷 표준 문서 시스템

- 인터넷을 기반으로 동작하는 하나의 서비스

- 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 정보 공간


※ 웹의 구성요소 : URL(주소), HTTP(통신규약), HTML(내용)

 

 

웹의 특징

- 전 세계의 컴퓨터를 연결

- HTTP(Hyper Text Transfer Protocol) 프로토콜을 사용

- HTML(Hyper Text Markup Language)로 작성된 문서 연결

- 텍스트, 그래픽, 오디오, 비디오, 프로그램 파일 등 멀티미디어 서비스 제공

 

※ 웹 표준

- 개발자 간 일종의 약속으로 정해진 규칙을 준수함으로써

모두 호환이 되어 편리하게 사용가능 (by W3C)

 

 

◆ IP와 DNS, Port 번호

 

1. IP주소 (like 아파트의 동)

- 하나의 컴퓨터(장비)에 할당된 번호

- 인터넷 상의 한 컴퓨터에서 다른 컴퓨터로 데이터를 보내는 데 사용되는 프로토콜(식별자 역할)


2. DNS(Domain Name Service)

- 사람이 외우기 쉬운 Domain주소를 IP로 변환/ IP주소를 다시 Domain 주소로 변환해주는 서비스

 

※ DNS서비스에 오류가 생기면 IP주소를 얻지 못하여 네트워크 서비스를 제공받지 못한다!

※ DNS서비스에 응답속도가 느리면 웹사이트에 접속도 늦어진다!


3. Port번호 (like 아파트 동의 호수)

- 하나의 컴퓨터에서 네트워크를 사용하는 프로그램이 여러 개가 동시에 실행되는 경우

  구분하기 위해 port번호 사용

 

※ HTTP 프로토콜의 기본 port번호는 80이다!

 

 

프로토콜(Protocol)

- 클라이언트와 서버 간의 데이터를 주고받는 통신규약

 

 

◆ HTTP ( HyperText Transfer Protocol )

 

1. HyperText

- 사용자의 선택에 따라 관련된 문서로 옮겨갈 수 있도록 조직화된 정보

- 일반적으로 링크(link) 또는 하이퍼링크(hyperlink)라고 부른다.

 

 

2. HTTP(HyperText Transfer Protocol)

- 클라이언트와 서버 사이에 이루어지는 요청-응답 프로토콜

- HyperText 링크를 통해서 문서를 이동하거나 페이지 정보를 전송하는 프로토콜

 

※ HTTP프로토콜의 특징

- 비지속성(Connectionless) 연결방식으로 동작한다는 점

즉, 클라이언트가 서버로 요청하고 응답을 받으면 연결을 유지하지 않고 즉시 연결을 끊는 방식

 

(+) 장점 : 동시 접속자가 증가하더라도 무리없이 서비스 가능

(-) 단점 : 요청-응답 이외에 정보를 유지할 기회가 없음

 

 

3. URL(Uniform Resource Locator)

- 웹 서버에 접속할 수 있는 수단
- 단일화된 방법으로 웹에 공개 된, 요청된 리소스(자원)의 위치를 알려주는 locater

 

 

프로토콜 : 웹의 공식 프로토콜인 HTTP를 쓰기 때문에 HTTP로 시작하는 것

② 호스트번호 : IP주소

포트번호 : 80번 포트는 기본포트이기 때문에 생략 가능

경로

파일명

 

※ URI(Uniform Resource Identifier)

- ④경로와 파일명을 포함한 개념 / 우리가 원하는 특정한 자원을 지칭하는 것

 

 

◆ 웹 어플리케이션

- 웹 기반으로 클라이언트의 요청을 받아 요청에 대해 응답하는것

   즉, 웹 브라우저를 이용한 클라이언트와 HTML(정적 웹 컴포넌트),

   JSP/Servlet(동적 웹 컴포넌트) 같은 자원을 가진 웹 서버간에

   동적으로 요청/응답 처리하는 프로세싱을 의미

- 물리적으로 웹 어플리케이션은 결국 하나의 폴더로 쌓여있는 것

※ 결국 서블릿, JSP, 스프링 등으로 작업된 파일들이 하나씩 모여

   톰캣 폴더에 들어가 웹 어플리케이션이 된다!!

 


◆ 웹 컴포넌트

- 웹 어플리케이션 개발시 사용되는 HTML, JSP, Servlet 및 이미지 파일들을 의미

- 웹을 구성하는 요소들이며 재사용이 가능한 조립 블록 형태

 

(1) HTML 컴포넌트(정적 컴포넌트)

파일 확장자는 .html으로, 웹 브라우저에게 웹 페이지의 구조와 내용을 전달할 목적으로 작성된다.

<html>
<head>
<title> HTML 타이틀입니다. </title>
</head>
<body>
<h1> 이곳은 제목입니다. </h1>
<p> 이곳은 문단입니다.</p>
</body>
</html>

 

(2) JSP 컴포넌트(동적 컴포넌트)

파일 확장자는 .jsp로, 정적인 HTML 태그와 동적인 JSP 태그가 혼합된 구조이다.

JSP는 화면을 구현하는 코드(Presentation Logic)와 자바 프로그래밍 코드(Business Logic)가 혼합된 형태

 

※ JSP 태그안에 자바 코드 를 삽입하여 자바 프로그래밍으로 실행되어 지기 때문에

JSP는 자바를 실행 시킬 수 있는 웹 컨테이너라는 특별한 환경에서 동작된다.

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title> JSP 타이틀입니다. </title>
</head>
<body>
<%
String name = "홍길동“;
%>
이름은<%= name %>
</body>
</html>

 

(3) Servlet 컴포넌트(동적 컴포넌트)

파일 확장자는 .java로 모든 코드가 자바 코드로 구성되어 웹 컨테이너가 필요

서블릿은 Business Logic 처리를 담당하고 JSP는 Presentation Logic 처리를 담당한다.

 

 

◆ 웹컨테이너(서블릿/JSP/EJB컨테이너)

- WAS에 포함되는 개념(혹은 그 자체로 WAS)

- JSP와 Servlet 컴포넌트(인스턴스)를 관리하는 역할

- Tomcat 및 resin 등이 있으며 Tomcat 컨 테이너를 가장 많이 사용

웹 컴포넌트는 Java SE 환경처럼 main 메서드 역할을 담당하는 시작점(starting point)이 없으며,
단지 이벤트 방식 처럼 동작이 되어 진다. 이벤트는 웹 브라우저를 통해서 사용자가 웹 서버에 요청을 보내는
상황을 의미한다. 클라이언트 요청에 의해서 웹 컴포넌트들을 생성하고 제거하는 메커니즘 이 필요한데
이 작업을 웹 컨테이너가 담당하며, 이는 웹 컨테이너의 많은 역할들 중에서 핵심이 되는 작업이다.

 

 

◆MVC 패턴

- Servlet과 JSP를 각 역할에 맞게 모듈화하여 개발하는 웹 어플리케이션 방법론

 

 

Model

웹 어플리케이션의 Business Logic을 담당하는 모듈로서 일반 자바 클래스로 구현된다. 데이터베이스 연동시 필요한 DAO,DTO 클래스 파일들에 해당된다.

 

View

사용자와의 직접적인 화면 구성을 담당하는 모듈로서 JSP로 구현된다. Model의 데이터를 HTML로 보여주거나, 사용자가 입력하는 화면 구성을 담당한다.

 

Controller

Model과 View는 논리적으로 밀접한 관련을 갖지만, 물리적으로는 관련이 전혀 없다. 서로간 의 의존성을 감소시킴으로써 유지 보수를 쉽게 할 목적으로 분리시켜 작업이 이루어진다. 따라서 Model과 View를 관리하는 역할의 Controller가 필요하며, Servlet로 구현한다. Controller는 여러 개의 Model 클래스 파일과 여러 개의 View들 중에서 적절하게 선택하여 실행시키는 핵심 역할을 담당한다. 예를 들어, 요청 다음에 보여줄 화면을 선택하는 작업이 거나 또는 사용자가 입력한 데이터를 검증하거나 출력하는 작업 등이다.

관련글 더보기