head 태그 내의 내용은 페이지에 표시되지는 않지만 페이지를 설명하는 내용이다(메타데이터)
CSS와 JS코드가 많아지면 HTML에 직접 넣기보다는 외부 파일의 링크를 걸어서 사용한다
<link rel="stylesheet" href="css/style.css">
<script src="js/library.js"></script>
CSS는 link요소의 rel과 href 속성, JS는 script 요소의 src 속성을 이용한다
이렇게 링크를 걸면 브라우저가 서버에 해당 파일을 요청하고 응답받아서 바로 해석한다
script 요소를 이용해서 JS 코드를 링크하거나 작성할 때 JS 코드가 html의 렌더링을 방해할 수 있다. 따라서 JS코드는 항상 body 태그가 닫힌 뒤나 닫히기 바로 직전에 넣어주도록 하자.
CSS는 head 요소에 link 요소를 이용해서 링크해주면 된다.
html 내부에 바로 작성하려면
CSS : head 요소에 style 요소를 넣고 context로 CSS 코드를 작성
JS : 코드는 보통 body 태그가 닫히 뒤에 script 요소를 넣어서 context에 JS 코드 작성
웹 서버는 소프트웨어 또는 소프트웨어가 동작하는 컴퓨터다.
웹 서버는 클라이언트가 요청하는 HTML 문서나 각종 리소스를 전달한다
에러가 발생하면 에러메세지를 보낸다
웹 브라우저/웹 크롤러가 웹서버에 요청하는 데이터는 정적 데이터(js, html, css 파일 = 컴퓨터에 저장된 파일), 동적 결과 = 웹 서버에 의해 실행된 프로그램에 의해 만들어진 결과
웹브라우저-웹 서버는 HTTP로 통신한다
HTTP는 프로토콜의 일종이고 프로토콜은 규약 = 통신하기 위해 미리 정해놓은 규칙이다
통신 과정은 대락적으로 이렇다
현재 Apache 웹 서버를 가장 많이 사용한다
그 외에는 Microsoft, nginix, Google 등이 있다.
WAS = Web Application Server
WAS는 일종의 미들웨어이다
프로그램 실행 환경과 데이터베이스 기능을 제공한다
여러개의 transacton(논리적인 작업단위)를 관리한다
업무를 처리하는 비즈니스 로직도 수행한다
웹 서버의 역할도 할 수 있다.
(즉 tomcat같은 WAS만 설치해서 웹 서버로 사용할 수 있다)
프로그램이 동작해서 얻은 동적 결과를 WAS가 브라우저에게 제공한다
정적 소스는 웹 서버가 브라우저에게 제공한다
현재는 웹 서버 없이 WAS만 있어도 정적/동적 결과를 브라우저에게 제공할 수 있다.
하지만 웹 서버와 WAS가 같이 있으면 좋은 이유는 웹 서버가 WAS에 비해 간단한 구조이기 때문이다.
WAS에서 프로그래밍 한 내용에 오작동이 발생하면 WAS를 재시작한다
이 때 웹 서버가 해당 WAS를 이용하지 못하게 하고 나서 재시작한다
이렇게 하면 사용자는 WAS에 오작동이 발생한지 모른다 -> 장애 극복
이러한 장애 극복을 위해 웹서버가 WAS 앞단에서 동작하는 구조를 가진다
DBMS는 데이터베이스를 관리하는 시스템이다
다수의 사용자들이 데이터베이스 내의 데이터에 접근할 수 있게 해주는 소프트웨어이다.
보통 서버 형태로 서비스를 제공한다
클라이언트가 많으면 관리하기 힘들다
클라이언트와 DBMS 사이에 또 다른 서버인 미들웨어를 둔다
미들웨어에서 대부분의 로직을 수행한다
데이터를 조작해야 하면 DBMS에게 요청하고 결과를 클라이언트에게 전송한다
클라이언트에는 복잡한 로직이 필요없고 화면에 표시만 해주면 된다
클라이언트는 입력/출력 역할만 하면된다