[Web Basic] URL 구성요소(+HTTP Status Code), 정적/동적 페이지, 빌드 (Day 45 - 1)

코딩기록·2024년 12월 11일

[ URL 구성요소 ]

https:// search.naver.com:443/search.naver?&sm=top_hty#section2

  • https:// : 프로토콜(서버와 클라이언트 사이의 통신 시 프로토콜)
  • search.naver.com : 요청할 DNS(도메인 네임) . IP로 변환됨
  • :443 : 요청할 port (보통 생략되어 있으며, https는 443임)
  • /searc.naver : 웹 서버 내에서 요청하고자 하는 특정 페이지나 리소스
  • ? 뒷 부분 : 쿼티 스트링(서버로 정보를 전달하기 위해 URL에 추가로 붙여지는 데이터로, ?로 시작하며 키과 값 쌍으로 구성됨)
  • #section2 : fragment(서버쪽에 요청하는 정보는 아니고, 클라이언트 측에서 현재 위치를 파악하기 위한 것. #section2 라고 하면 html에서 id가 section2인 곳으로 바로 이동)

http:// localhost:8181/basic

  • localhost : 127.0.0.1 라는 내 컴퓨터의 private IP (FYI. private IP : 외부 인터넷이 아닌 특정 조직에서만 사용하는 IP. 외부에서 연결하려면 public IP를 알아야 함)

[HTTP STATUS CODE]

  • 2xx는 요청 성공, 3xx는 리다이렉션, 4xx는 클라이언트측으로 인한 실패, 5xx는 서버로 인한 실패

  • 200 OK : 요청이 성공적으로 처리되었음
  • 201 Created : 요청이 성공적으로 처리되었으며, 새 리소스가 생성되었음(=서버에 새로운 데이터가 저장되었음= 댓글 달기 등)

  • 400 Bad Request : 클라이언트가 보낸 요청이 서버에서 이해할 수 없을 때(쿼리스트링을 형식에 맞게 안 보내면, 백엔드 개발자가 원래는 505로 뜨지만 try-catch 로 400으로 뜨게 setStatus함)
  • 404 Not Found : 올바르지 않은 리소스(페이지=path) 요청
  • 500 Internal Server Error : 개발자가 코드 잘못 짬

[ 정적 페이지 vs 동적 페이지 ]

구분정적 웹 페이지동적 웹 페이지
설명비즈니스 로직과 상관없이 항상 내용이 고정될 때사용자나 DB 내용에 따라 내용이 달라짐
html 생성웹 서버에서 개발자가 이미 만든 html 파일을 가지고 있다가, 클라이언트에게 전달WAS (클라이언트 요청에 따라 DB 조회 또는 서버 로직 실행 -> JSP, Servlet를 통해 실시간 생성)
렌더링클라이언트 사이드
(html, css, js를 해석하여 시각적으로 화면에 표시)
클라이언트 사이드
(서버가 생성한 html을 해석하여 화면에 표시)
로딩 속도빠름 (고정된 컨텐츠를 단순히 제공하므로 요청과 응답이 빠르게 이루어짐)느림 (서버에서 요청을 처리하고 html을 생성하는 과정이 필요하므로 시간이 더 걸림)
서버 종류 주로 웹서버주로 웹어플리케이션(java에서 비즈니스 로직 처리하고, db랑도 연결해야 하므로)

[ 웹 서버 vs WAS(Web application server) ]

  • JSP, Servlet은 뒷 포스트에서 확인 가능
구분웹 서버 (Web Server)웹 애플리케이션 서버 (WAS)
설명클라이언트가 정적 웹페이지를 요청할 때,
웹 서버에 미리 저장되어 있던 HTML,CSS,JS 파일을 전달해줌
클라이언트가 HTTP 통신으로 요청
-> 정적 웹페이지는 웹 서버가 처리하고, 동적 웹페이지(비즈니스 로직 및 DB 조회 내용에 따라 달라지는 것)은 WAS로 전달
-> WAS(Tomcat)은 Servlet을 호출
-> Servlet이 호출됨(JSP로 html 생성했을 경우, JSP는 tomcat에 의해 자동으로 컴파일 되어 servlet으로 변환됨)
-> 생성된 콘텐츠를 WAS가 클라이언트에 전달
처리 내용정적 콘텐츠 제공동적 콘텐츠 생성 및 처리
예시Apache HTTP Server, NginxApache Tomcat, JBoss, WildFly, WebLogic

[ 빌드 도구 ]

용도1. 의존성(라이브러리 관리)

-외부 라이브러리를 pom 파일에서 자동으로 다운로드 및 관리

용도2. 컴파일

  • HTML, CSS, JavaScript는 브라우저가 바로 읽을 수 있지만, 서버 사이드 언어인 Java는 컴파일 과정을 거쳐야

0개의 댓글