하나의 사이트나 또는 다른 사이트와의 관계가 거미집처럼 복잡하게 얽혀 있는 관계
기본적으로 web은 CS구조를 가진다 [Client/Server구조]
접속하고자 하는 computer의 IP Address를 알아야 해요!
IP Address를 이용하면 통신을 하고자 하는 프로그램이 실행되고 있는 computer(NIC)를 찾을수 있다.! 그리고 서버 프로세스에 할당된 Port번호를 통해 응용서비스를 찾아간다.
즉 web client에서 데이터를 요청하면 사용하고자하는 컴퓨터의 ip주소와 port번호를 찾아 연결을 욫어한다. 연결된 webserver에선 특정 client가 필요로 하는 특정 파일을 찾아 다시 response 해준다!
전달받은 responser를 해석해서 rendering한다 -> 화면에 표현해줌!
정적 web (static web)
-> web server쪽에 이미 존재한s resource를 요청하는 작업
동적 web (dynamic web)
-> web server쪽에 존재하는 program 을 호출 / 결과 resource를 생성해서 response
이제 WebStorm을 통해 작업을 해볼것이다 간단히 생각하면 WebStorm안에서 3가지 작업을 다 수행할 수 있다.
이런식으로 생각하면 편할 것이다.
HTML : Hyper Text Markup Language
HTML은 markup언어 -> 태그언어이다.
정해져있는 tag를 이용해 내용을 구성한다.
1999년 12월 html 4.01버전을 마지막 버전으로 더이상 버전업 하지 않겠다고 선언 했지만 결국 2014년 버전업이 되었다 => HTML5
HTML은 크게 3가지로 구성된다.
HTML언어는 일단 Element로 구성된다!
Element는 Tag + 내용
형식
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html>
- < !DTCTYPE html > 은 "현재문서가 html 문서야"라고 알려준다 즉, 문서 형태를 알려주는 element이다
HTML은 크게 2부분으로 나누어진다.
전체 HTML은 < html > ~ < /html >로 묶인다!
코드를 보면 알 수 있듯이 이런 Element들은 포함 관계를 가질 수 있다!
그렇다고 무조건 포함관계에 들어가는 것은아니다! 포함관계에 들어가진 않는 Element도 존재한다!
< haed > ~ < /head >
=> 문서의 설정을 잡음!< meta charset = "UTF-8" >
=> 유니코드로 설정해서 표현해줌!< body > ~ < /body >
=> 문서의 내용을 표현한다.
동작과정
문서를 하나 만듬 (test.html)
Web Server에게 우리 프로젝트 존재를 알려줘야함
Web Client(Browser)를 실행시킴
URL(protocol://IP:port/파일명)을 이용해서 Web Client가 Web Server에 Request를 보냄
Web Server가 Request에 대한 처리를 한 후 Web client에게 Response를 보냄!
Web Client가 Response를 해석해서 Browser에 Rendering 진행
HTML의 구성요소
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html>
Element(요소. 엘리먼트)
Tag(태그)
Attribute (어트리뷰트, 속성)
예제
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <a href = "http://www.naver.com">네이버로바로가기</a> <br> <!-- 줄바꿈 --> <img src="img/캡쳐.PNG" data-author = "IU"> <br><br> <table> <thead> <!-- 컬럼에 대한 정의 --> <th>이름</th> <th>학과</th> <th>주소</th> </thead> <tbody> <!-- 각 컬럼에 대한 정의 --> <tr> <td>홍길동</td> <td>건축학과</td> <td>서울</td> </tr> <tr> <td>아이유</td> <td>영문과</td> <td>인천</td> </tr> </tbody> </table> <br><br> <ul> <!-- Unorder list --> <li>서울</li> <li>인천</li> <li>대구</li> </ul> <br> <input type = "button" value="클릭"> </body> </html>
실행하면 다음과 같은 화면이 출력된다.
그럼 각각의 기능들을 알아보겠다!
<html> ==> HTML문서는 반드시 이 Element로 감싸져야함! <head> ==> HTML문서의 설정을 담당 => 대표적으로 charset설정(유니코드로 설정) <body> ==> HTML문서의 내용을 표현 <a> => 앵커 하이퍼링크(클릭가능한 형태)를 만들어주는 Element => 반드시 클릭했을 때 request를 어떻게 전송할건지를 설정해주는 attribute가 존재! => href라는 어트리뷰트를 반드시 설정해 줘야함 <!-- <img src="img/캡쳐.PNG" data-author = "IU"> --> <img> => 그림을 표현할때 사용하는 Element => 닫는 태그가 존재하지 않음! => 이미지를 표현할때 url은 src attribute를 이용 = 프로젝트내에 이미지를 가져다 놓고 보여주는 식으로 진행 <br> => 한줄을 띄우는 Element enter기능과 같다. <table> => 2차원 테이블 형태로 데이터를 표현하기 위해서 사용! <table> <thead> <!-- 컬럼에 대한 정의 --> <th>이름</th> <th>학과</th> <th>주소</th> </thead> <tbody> <!-- 각 컬럼에 대한 정의 --> <tr> <td>홍길동</td> <td>건축학과</td> <td>서울</td> </tr> <tr> <td>아이유</td> <td>영문과</td> <td>인천</td> </tr> </tbody> </table> => <th> HTML 테이블에서 제목이 되는 헤더 셀(header cell)을 정의할 때 사용 => <tr> 테이블에서 셀들로 이루어진 하나의 행(row)을 정의할 때 사용 => <td> HTML 테이블에서 하나의 데이터 셀(data cell)을 정의할 때 사용 <ul>.<li> => <ul> 목록을 만드는 Element항목이 나옴! 즉 스트(list)를 정의할 때 사용 => <li> HTML 리스트(list)에 포함되는 아이템(item)을 정의할 때 사용 <div></div> => 영역을 잡아주는 Element => 화면에 글씨영역이 설정되어있는지 눈으로 확인할 수 있음! => ex) div 402.5 x 21.5이런식으로 보여줌 => 즉 block level element 영역을 화면 끝까지 잡음! <h1></h1> => 헤드라인 <h1> ~ <h6>까지 있음 => 글자를 크고 진하게 표시 => 이것도 blocklevel element <span></span> => 영역을 잡아주는 element => div와 똑같지만 inline element이다 => inlin element : 내용이 적힌 부분만 영역을 잡음
attribute에 대해 알아야 한다. attribute(속성)도 당연히 정해져 있다.
ex)
<img src = "img/img.png" author = "IU">
- 사용자 정의 시
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <a href = "http://www.naver.com">네이버로바로가기</a> <br> <!-- 줄바꿈 --> <!-- HTML은 문법이 잘못되어도 browser가 알아서 처리함! --> <!-- 그러면 문법이 잘못되어도 괜찮은가? 아니다! --> <!-- author라는 attribute는 존재하지 않음 --> <!-- 하지만 태그에 추가적인 정보를 포함하고싶다 --> <!-- 사용자 정의 attribute를 이용하면됨! --> <!-- data- 시작해야한다. --> <!--사용자 입력 양식(흔히 폼이라고 표현함!) --> <img src = "img/img.png" data-author = "IU"> </body> </html>
<!--버튼, 라디오버튼, 입력상자, select박스, progressbar--> <input type ="양식"> 양식에 "button"을 누르면 버튼창이 뜨는걸 볼 수 있다. <input type ="button" value = "클릭"> <!-- value안에 값을 설정하여 해당 input type안에 입력내용을 보이게 할 수 있다.-->
문서의내용은 HTML Element로 표현을 함!
CSS(Cascading Style Sheet) 화면을 꾸밀때 사용
<span style ="color : red">여기는 span입니다!</span>
JavaScript는 Browser에서 실행된다!
프로젝트에서 새폴더를 만들고 그 안에 자바스크립트 파일을 하나 생성하고 연습을 해보자!
console.log를 사용하면 출력할 때 browser의 console에 출력이 된다.
형식
- html문서 head라는 태그에 javascript code를 작성한다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script src = "js/aa.js"></script> </head> <body> <!-- value를 활용하여 버튼안에 값을 입력 --> <!-- 버튼이 클릭되면 JavaScript 함수를 실행하고 싶다! --> <!-- onclick을 이용하여 버튼이 눌릴때를 설정 --> <input type = "button" value = "클릭" onclick ="my_func()"> </body> </html> <script>-- 여기 안에 스크립트 내용을 적는다 -- 근데 그렇게하면 밑에는 html언어 위에는 javascript언어가 실행되는 경우가 발생한다 -- 그렇기 때문에 -- <script src = "경로"></script> 이런식으로 작성해준다.
- js 파일에는 다음과 같이 작성한다.
// aaa.js파일 function my_func(){ alert("버튼클릭") } // alert함수는 브라우저내에 경고창을 띄운다 // 즉 버튼을 누르면 경고창안에 버튼클릭이라는 문자가 출력될 것이다. // 확인을 해보자
- 다음과 같이 출력되는 것을 확인 할 수 있다.