Backend/서버프로그래밍
[서버프로그래밍] 1. 웹 프로그래밍의 이해(개념 정리)
사랑짱
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를 각 역할에 맞게 모듈화하여 개발하는 웹 어플리케이션 방법론