본문 바로가기
최범균의 JSP 2.3 웹프로그래밍/CH02 웹 프로그래밍 기초

01. 웹과 웹 프로그래밍

by 개발자공부 2024. 6. 29.

1.1 URL과 웹 페이지

URL (Uniform Resource Locator)

웹 브라우저 주소줄에 표시되며, http://javacan.tistory.com/390 같은 형식이다.

URL에 해당하는 내용이 웹 브라우저에 출력되며, 출력된 내용을 웹 페이지(web page)라고 부른다. 흔히 홈페이지라고 부르는 웹 사이트는 이런 웹 페이지의 묶음이다.

'://'은 프로토콜과 나머지 부분을 구분하기 위해 사용한다.

구성 요소 설명
프로토콜 웹 브라우저가 서버와 내용을 주고받을 때 사용할 규칙 이름이다. 웹 페이지의 주소를 표현할 때는 http를 사용한다.
서버 이름 웹 페이지를 요청할 서버의 이름을 지정한다. 서버 이름은 "javacan.tistory.com"과 같은 도메인 이름이나 180.70.134.239와 같은 IP 주소를 입력할 수 있다.
경로 웹 페이지의 상세 주소에 해당한다. 즉, 웹 페이지마다 다른 경로를 갖는다.
쿼리 문자열 추가로 서버에 보내는 데이터에 해당한다. 같은 경로라 하더라도 입력한 값에 따라 다른 결과를 보여줘야 할 때 쿼리 문자열을 사용한다. 예를 들어, 검색 결과를 보여주는 페이지를 생각해보자. 이 페이지는 입력한 검색어에 따라 다른 내용이 표시되는데, 보통 쿼리 문자열을 이용해서 검색어를 전달한다.

 

+) 수업시간 내용

URI(Uniform Resource Identifier) - 식별자

URI는 인터넷에서 리소스를 식별하기 위한 문자열이다. URI는 특정 리소스를 고유하게 식별하며, 리소스의 위치와 상관없이 해당 리소스를 지칭할 수 있다.

// 리소스의 이름만 나타낸다.
domainname.com/my-info

 

URL(Uniform Resource Locator) - 식별자 + 위치

URL은 리소스의 위치를 표현하는 문자열로써 URI의 한 형태이다. URL은 리소스가 어디에 있는지를 나타내며, 그 리소스에 접근하기 위한 방법인 프로토콜을 포함한다. 브라우저로 특정 웹 리소스에 접근할 때는 URL을 사용하여 이를 서버에게 요청한다.

리소스 위치를 식별하는데 사용되지만 반드시 파일 확장자나 특정 리소스를 가리키지는 않을 수도 있다. 웹 상에 모든 리소스를 식별하는데 사용될 수 있으며, 이는 특정 파일이나 데이터베이스 쿼리 결과일 수도 있다.

http://www.domainname.com/my-info 
// 이름과 더불어 어떻게 도달할 수 있는지 위치까지 함께 나타내기 때문이다.
// 프로토콜 http: 또는 https: 등을 포함하고 있다.
// 그러나 특정 파일이 아닐 수도 있다.

URI가 더 포괄적인 개념이며 URL은 이 안에 포함된다.

 

프로토콜(protocol)이란 리소스에 접근하는 방법을 지정하는 방식이다. 일반적으로 https, http, ftp 또는 file 등이 여기에 해당할 수 있다.




 

1.2 웹 브라우저와 웹 서버

 

+) 톰캣 실행하면 기본 포트번호가 8080으로 셋팅되어 있으나 conf/server.xml파일에서 8080 포트 번호를 지정하는 설정 부분을 찾을 수 있다. 이 설정 값을 웹 서버가 사용하는 기본 포트 번호인 80으로 수정하면 80포트로 실행할 수 있다.

 


 

1.3 HTML과 HTTP

구성 요소 요청 데이터 응답 데이터
요청/응답 줄 GET이나 POST와 같은 HTTP 요청 방식(method)과 요청하는 자원의 경로를 지정한다. 요청에 대해 200이나 404같은 응답 코드를 전송한다. 참고로 200은 요청을 정상적으로 처리했음을 의미한다.
헤더 서버가 응답을 생성하는데 참조할 수 있는 정보를 전송한다. 예를 들어, 브라우저의 종류나 언어 등의 정보를 보낸다. 응답에 대한 정보를 전송한다. 응답의 몸체가 어떤 데이터인지, 길이는 어떻게 되는지 등에 대한 정보를 담는다.
몸체 정보를 전송해야 할 때 사용한다. 예를 들어, 파일 업로드와 같은 기능을 사용하면 몸체 영역에 파일을 담아 웹 서버에 전송한다. 웹 브라우저가 요청한 자원의 내용을 담는다. HTML 문서나 이미지 파일 데이터 등이 몸체 영역을 이용해서 전달한다.

 

+) 수업시간 내용

HTTP 메시지에는 클라이언트가 전송하는 HTTP요청과 서버가 반환하는 HTTP응답이 있다. 기능과 세부 구조에서는 차이가 있지만 크게 보면 이들은 HTTP 헤드와 바디로 구성된다는 공통점이 있다.

빈줄을 CRLF라고 하며, CRLF 앞 줄을 헤드라고 부르고 뒷 줄을 바디라고 부른다.

HTTP 요청

HTTP 요청은 서버에게 특정 동작을 요구하는 메시지이다. 서버는 해당 동작이 실현 가능한지와 클라이언트가 그러한 동작을 요청할 권한이 있는지 등을 검토하고 적절할 때만 이를 처리한다.

GET 요청 HTTP 메시지
POST 요청 HTTP 메시지

 

HTTP 요청의 메소드 및 URI에 대해 더 자세히 알고 싶다면 표준 문서 확인해보기.

https://datatracker.ietf.org/doc/pdf/rfc2616.pdf

 

HTTP 응답

HTTP 응답은 HTTP 요청에 대한 결과를 반환하는 메시지이다. 요청을 수행했는지 하지 않았는지, 안 했다면 이유는 무엇인지와 같은 상태 정보(Status), 그리고 클라이언트에게 전송할 리소스가 응답에 포함된다.

 

시작줄

HTTP 응답의 시작 줄은 HTTP 버전, 상태 코드(Status Code), 그리고 처리 사유(Reason Phrase)로 구성된다. 각각은 띄어쓰기로 구분된다.

 

HTTP 버전은 서버에서 사용하는 HTTP 프로토콜의 버전을 나타낸다. 그리고 상태 코드는 요청에 대한 처리 결과를 세 자릿수로 나타낸다. HTTP 표준인 RFC 2616은 대략 40여개의 상태 코드를 정의하고 있는데, 각각은 첫 번째 자릿수에 따라 5개의 클래스로 분류된다. 처리 사유는 상태 코드가 발생한 이유를 짧게 기술한 것이다. 

상태 코드

1xx
요청을 제대로 받았고, 처리가 진행 중임

2xx
요청이 제대로 처리됨
200: 성공

3xx
요청을 처리하려면, 클라이언트가 추가 동작을 취해야 함.
302: 다른 URL로 갈 것

4xx
클라이언트가 잘못된 요청을 보내어 처리에 실패했습니다.
400: 요청이 문법에 맞지 않음
403: 클라이언트가 리소스에 요청할 권한이 없음
404: 리소스가 없음

5xx
클라이언트의 요청은 유효하지만, 서버에 에러가 발생하여 처리에 실패했습니다.
500: 요청을 처리하다가 에러가 발생함
503: 서버가 과부하로 인해 요청을 처리할 수 없음

 


1.4 정적 자원과 동적 자원

정적 자원(static)

파일이 바뀌지 않는 한 웹 브라우저는 늘 같은 응답 데이터를 받으므로 동일한 화면을 출력한다고 해서 이들 URL에 해당하는 자원을 정적 페이지 또는 정적 자원이라고 표현한다. 보통 이미지 파일이나 HTML파일과 같이 자주 바뀌지 않는 것들을 정적 자원으로 제공한다.

 

동적 자원(dynamic)

정적 자원과 달리 파일(코드)을 바꾸지 않아도 조건에 따라 다른 응답 데이터를 전송하는 경우도 있다. 예를 들어, 페이스북의 메시지 내용을 보여주는 주소인 http://www.facebook.com/messages 를 입력하면 URL을 입력한 시점에 따라 다른 내용이 웹 브라우저에 표시된다. 비슷하게 구글은 쿼리 문자열에 따라 다른 검색 결과를 보여준다. 이렇게 시간이나 특정 조건에 따라 응답 데이터가 달라지는 자원을 동적 페이지 또는 동적 자원이라고 부른다.


1.5 웹 프로그래밍과 JSP

JSP(JavaServer Pages)

동적 페이지를 작성하는데 사용되는 자바의 표준 기술로써 HTML 응답을 생성하는데 필요한 기능을 제공하고 있다. 더 정확하게는 HTML 응답뿐만 아니라 XML, JSON, 바이너리 파일 등도 응답으로 생성할 수 있지만, 주로 HTML응답을 생성하는 목적으로 JSP를 사용한다. 

 

WAS(Web Application Server)

단순 웹 서버가 정적인 HTML 파일이나 이미지를 제공하는 것과 달리 이들 서버는 웹을 위한 연결, 프로그래밍 언어, 데이터베이스 연동과 같이 어플리케이션을 구현하는데 필요한 기능을 제공하고 있다. 이런 이유로 이들 서버 프로그램을 웹 어플리케이션 서버라고 부른다. WAS는 웹 브라우저로부터 요청이 오면 알맞은 프로그램을 찾아 실행하고, 프로그램의 실행 결과를 응답으로 전송한다.