728x90
반응형
728x90
반응형

함수예고(함수=수납상자)

nightDayHandler(){} 함수를 정의함으로써 긴 코드의 길이를 줄일 수 있습니다.


함수

BASIC

코드가 반복되어야 하는 경우 반복문을 처리해 사용하면 되지만 연속적으로 반복해야 하는 경우가 아니라면 반복문을 사용할 수 없게 됩니다. 이때 함수를 사용해 해결할 수 있습니다.

<h1>Function</h1>

 <h2>Basic</h2>

 <ul>

      <script>

        function two(){

          document.write('<li>2-1</li>');

          document.write('<li>2-2</li>');

        }

        document.write('<li>1</li>');

        two();

        document.write('<li>3</li>');

        two();

      </script>

</ul>

Parameter & Argument 함수 입력부분이 파라미터


<h2>Parameter & Argument</h2>

    <script>

      function onePlusOne(){

        document.write(1+1+'<br>');

      }

      onePlusOne();

      function sum(left, right){  //left, right를 매개변수 parameter

        document.write(left+right+'<br>');

      }

      sum(2,3); //5 2,3을 인자 argument라 합니다.

      sum(3,4); // 7

    </script>

Return 함수 출력부분은 리턴

<h2>Return</h2>

    <script>

      function sum2(left, right){

        return left+right;

      }

      document.write(sum2(2,3)+'<br>');

      document.write('<div style="color:red">'+sum2(2,3)+'</div>');

      document.write('<div style="font-size:3rem;">'+sum2(2,3)+'</div>');

    </script>

 

함수의 활용

함수를 호출할 때 인자로 this를 주면 nightDayHandler(self)함수 내에 포함되어 있는 input태그 자체가 인자로 함수에 전달됩니다. 함수는 self라는 파라미터로 인자로 전달받게 되고 self라는 값은 함수를 호출한 input태그가 됩니다. 따라서 클릭을 함으로 value night day로 변경이 됩니다. 

WEB

  1. HTML
  2. CSS
  3. JavaScript

WEB

  1. HTML
  2. CSS
  3. JavaScript

객체예고

객체는 변수와 함수를 정리정돈하기 위한 도구

function LinksSetColor(color){ //a태그 전체의 색을 변경

    var alist = document.querySelectorAll('a');

    var i = 0;

    while(i < alist.length){

      alist[i].style.color = color;

      i = i + 1;

    }

  }

  function BodySetColor(color){ //바디태그의 글씨색을 변경

    document.querySelector('body').style.color = color;

  }

  function BodySetBackgroundColor(color){ //바디태그의 배경색을 변경

    document.querySelector('body').style.backgroundColor = color;

  }

  function nightDayHandler(self){

    var target = document.querySelector('body');

    if(self.value === 'night'){

      Body.setBackgroundColor('black');

      Body.setColor('white');

      self.value = 'day';

      Links.setColor('powderblue');

    } else {

      Body.setBackgroundColor('white');

      Body.setColor('black');

      self.value = 'night';

      Links.setColor('blue');

    }

}

객체를 만들지 않았기 때문에 함수는 동작하지 않습니다.

 

객체(object)

객체의 쓰기와 읽기

<h1>Object</h1>

    <h2>Create</h2>

    <script>

      var coworkers = {

        "programmer":"egoing",

        "designer":"leezche"

      };

      document.write("programmer : "+coworkers.programmer+"<br>");

      document.write("designer : "+coworkers.designer+"<br>");

      coworkers.bookkeeper = "duru";

      document.write("bookkeeper : "+coworkers.bookkeeper+"<br>");

      coworkers["data scientist"] = "taeho";

      document.write("data scientist : "+coworkers["data scientist"]+"<br>");

    </script>

객체와 반복문

<h2>Iterate</h2>

<script>

    for(var key in coworkers) {

      document.write(key+' : '+coworkers[key]+'<br>');

    }

</script>

프로퍼티와 메소드(자바스크립트에서 객체는 함수도 담을 수 있습니다.)

<h2>Property & Method</h2>

    <script>

      coworkers.showAll = function(){

        for(var key in this) {

          document.write(key+' : '+this[key]+'<br>');

        }

      }

      coworkers.showAll();

    </script>

showAll함수 안에서 소속된 객체를 가리키는 약속된 기호를 this 

객체의 소속된 변수에 값으로 함수를 만들 수 있습니다.

객체의 소속된 함수를 메소드, 객체의 소속된 변수를 프로퍼티 


체 활용

WEB

  1. HTML
  2. CSS
  3. JavaScript

JavaScript

WEB

  1. HTML
  2. CSS
  3. JavaScript

JavaScript

파일로 쪼개서 정리 정돈하기

수정하고자 하는 코드를 변경하면 코드가 실행되지만 여러 개의 코드가 있는 경우 각각의 코드를 변경하는 것이 쉬운 작업은 아닙니다.

.js파일로 따로 공통된 코드를 정의하여 <script src=”colors.js”></script> 구현하면 쉽게 처리할 수 있습니다. js파일 내에는 <script>태그가 들어가면 안됩니다.

.js파일에 따로 코드를 분류를 하게 되면 유지보수가 수월해집니다.

코드의 명확성이 높아지고 가독성이 높아지게 됩니다. 여러 개의 파일로 쪼개는 것이 파일을 정리정돈하는 방법입니다.

*웹 페이지에 다운로드된 파일은 컴퓨터에 저장되어 다음 접속 시에는 저장된 파일을 읽어 네트워크를 통하지 않게 합니다. 서버입장에서 비용을 절감하는 효과를 얻습니다. 사용자 입장에서 네트워크 트래픽을 절감하고 빠르게 웹 페이지를 볼 수 있는 효과가 있습니다.

 

라이브러리와 프레임워크(서로 협력하는 모델)

라이브러리는 재사용하기 쉽도록 정리정돈 되어있는 소프트웨어. (만들어진 것을 쓰는 것)

프레임워크는 만들고자 하는 것이 있을 때 무엇이냐에 따라 게임, , 채팅 등

만들고자 하는 부분에 공통부분을 프레임워크 개성에 따라 다른 부분만 수정할 수 있도록 하는 것.

라이브러리(jQuery)

CDN(Content Delivery Network): 직접 라이브러리를 다운로드 받아 프로젝트 포함시켜 업로드하고 서비스하려면 비용이 듭니다. 많은 라이브러리가 CDN을 통해 자신들의 서버에 파일을 보관해 우리는 그것을 <script src=”.js”>를 통해 가져가는 방식으로 사용료까지 내줌으로 편한 작업입니다.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

var Links = {

   setColor:function(color){

$('a').css('color', color);

   }

 }


UI(User Interface) vs API(Application Programming Interface)

UI : 사용자가 조작 장치를 이용해 웹 애플리케이션을 사용하고 있는 것

 API : 경고창이 실행되는 것은 웹 브라우저를 만드는 사람이 경고창을 미리 만든 것, 조작 장치 alert API라고 합니다.

사용자는 UI, 프로그래머는 UI+API를 모두 사용, 자신만의 응용프로그램을 만들 수 있다.

 

수업을 마치며

Cookie 개인화된 서비스를 제공, offline web application 인터넷이 끊겨도 동작하고자 하는 앱

webRTC 화상통신, webGL 3차원 그래픽, webVR 가상현실


출처 : 생활코딩 강의

728x90
반응형
728x90
반응형

HTTP(HyperText Transport Protocol)

 웹 서버와 클라이언트 간의 문서를 교환하기 위한 통신 규약

 HTTP는 웹에서만 사용하는 protocol TCP/IP 기반으로 서버와 클라이언트 간의 요청과 응답을 전송


 HTTP 0.9 -> HTTP 1.0 -> HTTP 1.1
 HTTP 0.9 : 읽기 전용. GET 요청만 가능했습니다. 
 HTTP 1.0 : POST, HEAD 가 추가 되었습니다. 즉 클라이언트에서 서버로의  데이터 전송도 가능해 졌습니다. 
 HTTP 1.1(최신 버전) : PUT,DELETE,TRACE 등 추가 되었습니다. 클라이언트는 서버로의 데이터 전송 뿐만 아니라 변경, 삭제 까지 가능하게 되었습니다.


클라이언트 요청[편집]

GET /restapi/v1.0 HTTP/1.1
Accept: application/json
Authorization: Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw

서버 응답[편집]

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

응답 코드[편집]

클라이언트가 서버에 접속하여 어떠한 요청을 하면, 서버는 세 자리 수로 된 응답 코드와 함께 응답한다. HTTP의 응답 코드는 다음과 같다.

코드메시지설명
1XXInformational(정보)정보 교환.
100Continue클라이언트로부터 일부 요청을 받았으니 나머지 요청 정보를 계속 보내주길 바람. (HTTP 1.1에서 처음 등장)
101Switching Protocols서버는 클라이언트의 요청대로 Upgrade 헤더를 따라 다른 프로토콜로 바꿀 것임. (HTTP 1.1에서 처음 등장)
2XXSuccess(성공)데이터 전송이 성공적으로 이루어졌거나, 이해되었거나, 수락되었음.
200OK오류 없이 전송 성공.
202Accepted서버가 클라이언트의 요청을 수락함.
203Non-authoritavive Information서버가 클라이언트 요구중 일부만 전송.
204Non Content클라이언트의 요구를 처리했으나 전송할 데이터가 없음.
205Reset Content새 문서 없음. 하지만 브라우저는 문서 창을 리셋해야 함. (브라우저가 CGI 폼 필드를 전부 지우도록 할 때 사용됨.) (HTTP 1.1에서 처음 등장)
206Partial Content클라이언트가 Range 헤더와 함께 요청의 일부분을 보냈고 서버는 이를 수행했음. (HTTP 1.1에서 처음 등장)
3XXRedirection(방향 바꿈)자료의 위치가 바뀌었음.
300Multiple Choices최근에 옮겨진 데이터를 요청.
301Moved Permanently요구한 데이터를 변경된 URL에서 찾았음.
302Moved Permanently요구한 데이터가 변경된 URL에 있음을 명시. 301과 비슷하지만 새 URL은 임시 저장 장소로 해석됨.

[8]

303See Other요구한 데이터를 변경하지 않았기 때문에 문제가 있음.
304Not modified클라이언트의 캐시에 이 문서가 저장되었고 선택적인 요청에 의해 수행됨 (보통 지정된 날짜보다 더 나중의 문서만을 보여주도록 하는 If-Modified-Since 헤더의 경우). [9]
305Use Proxy요청된 문서는 Location 헤더에 나열된 프록시를 통해 추출되어야 함. (HTTP 1.1에서 처음 등장)
307Temporary Redirect자료가 임시적으로 옮겨짐.
4XXClient Error(클라이언트 오류)클라이언트 측의 오류. 주소를 잘못 입력하였거나 요청이 잘못 되었음.
400Bad Request요청 실패. 문법상 오류가 있어서 서버가 요청사항을 이해하지 못함, [10]
401.1Unauthorized권한 없음 (접속실패). 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지 않음. [11]
401.2Unauthorized권한 없음 (서버설정으로 인한 접속 실패). 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지않음. [12]
401.3Unauthorized권한 없음 (자원에 대한 ACL에 기인한 권한 없음). 클라이언트가 특정 자료에 접근할 수 없음. [13]
401.4Unauthorized권한 없음 (필터에 의한 권한 부여 실패). 서버에 접속하는 사용자들을 확인하기 위해 설치한 필터 프로그램이 있음. [14]
401.5Unauthorized권한 없음 (ISA PI/CGI 애플리케이션에 의한 권한부여 실패). 이용하려는 서버의 주소에 ISA PI나 CGI프로그램이 설치되어 있고, 권한을 부여할 수 없음. [15]
402Payment Required예약됨.
403.1Forbidden금지 (수행접근 금지). 수행시키지 못하도록 되어있는 디렉터리 내의 실행 파일을 수행하려고 하였음.
403.2Forbidden금지 (읽기 접근 금지). 접근한 디렉터리에 가용한 기본 페이지가 없음. [16]
403.4Forbidden금지 (SSL 필요함). 접근하려는 페이지가 SSL로 보안유지 되고 있음. [17]
403.5Forbidden금지 (SSL 128필요함). 페이지가 128비트의 SSL로 보안유지 되고 있음. [18]
403.6Forbidden금지 (IP 주소 거부됨). 사용자가 허용되지 않은 IP로부터 접근함.
403.7Forbidden금지 (클라이언트 확인 필요). 클라이언트가 자료에 접근할 수 있는지 확인 요함. [19]
403.8Forbidden금지 (사이트 접근 거부됨). 서버가 요청사항을 수행하고 있지 않거나, 해당 사이트에 접근하는 것이 허락되지 않음.
403.9Forbidden접근금지 (연결된 사용자수 과다). 서버가 BUSY 상태에 있어서 요청을 수행할 수 없음.
403.10Forbidden접근금지 (설정이 확실 하지 않음).
403.11Forbidden접근금지 (패스워드 변경됨). 잘못된 암호를 입력했음.
403.12Forbidden접근금지(Mapper 접근 금지됨). 클라이언트 인증용 맵이 해당 웹 사이트에 접근하는 것이 거부됨.
404Not Found문서를 찾을 수 없음. 서버가 요청한 파일이나 스크립트를 찾지 못함.
405Method not allowed메서드 허용 안됨. 요청 내용에 명시된 메서드를 수행하기 위해 해당 자원의 이용이 허용되지 않음. [20]
406Not Acceptable받아들일 수 없음. [21]
407Proxy Authentication Required프록시 서버의 인증이 필요함. [22]
408Request timeout요청 시간이 지남.
409Conflict요청을 처리하는 데 문제가 있음. 보통 PUT 요청과 관계가 있다. 보통 다른 버전의 파일을 업로드할 경우 발생함. (HTTP 1.1에서 새로 등장)
410Gone영구적으로 사용할 수 없음.
411Length Required클라이언트가 헤더에 Content-Length를 포함하지 않으면 서버가 처리할 수 없음.(HTTP 1.1에서 새로 등장)
412Precondition Failed선결조건 실패. 헤더에 하나 이상의 선결조건을 서버에서 충족시킬 수 없음. [23]
413Request entity too large요청된 문서가 현재 서버가 다룰 수 있는 크기보다 큼. [24] (HTTP 1.1에서 새로 등장)
414Request-URI too long요청한 URI가 너무 김. [25]
415Unsupported media type요청이 알려지지 않은 형태임. (HTTP 1.1에서 새로 등장)
5XXServer Error(서버 오류)서버 측의 오류로 올바른 요청을 처리할 수 없음.
500Internal Server Error서버 내부 오류. [26]
501Not Implemented필요한 기능이 서버에 설치되지 않았음. [27]
502Bad gateway게이트웨이 상태 나쁨. [28]
503Service Unavailable외부 서비스가 죽었거나 현재 멈춘 상태 또는 이용할 수 없는 서비스. [29]
504Gateway timeout프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있음. 초기 서버가 원격 서버로부터 응답을 받을 수 없음. (HTTP 1.1에서 새로 등장)
505HTTP Version Not Supported해당 HTTP 버전을 지원하지 않음.

HTTP 메소드

 GET, ,HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH



728x90
반응형
728x90
반응형

제어할 태그 선택하기






자바스크립트로 할 수 있는 중요한 일 사용자와 상호작용해서 HTML, CSS를 동적으로 변경해 보다 사용자와 대화하는 듯한 느낌의 애플리케이션을 만드는 핵심적 원리

 

프로그램, 프로그래밍, 프로그래머

컴퓨터 언어 (HTML, CSS)

컴퓨터 프로그래밍 언어(JavaScript)

프로그램 이란, 순서.

그 순서를 만드는 행위가 '프로그래밍'

그 순서를 만드는 사람이 '프로그래머'

HTML은 웹 페이지를 묘사, 자바스크립트는 사용자와 상호작용하기 위해 개발된 언어

반복적으로, 조건에 따라 다른 기능을 실행

 

조건문 예고

비교 연산자와 Boolean 데이터타입

조건문

조건문의 활용



리팩토리(refactoring)



중복을 끝까지 찾아서 없애라!

 

반복문 예고

배열, 반복적인 작업 처리를 위한 반복문

배열(Array)

배열은 데이터 중 연관 된 데이터를 잘 정리정돈 해 담아 놓는 수납상자, array

반복문(Loop)

반복해야 할 2줄의 코드가 1억개라면 copy&paste가 불가능합니다. 만약 했더라고 오류가 발생한다면 다시 수정해야 하는 어려움이 발생, 이때 반복문을 사용합니다.

배열과 반복문

스크립트에 신경 쓸 필요 없이 데이터 자체에 집중하는 효과를 얻을 수 있습니다.

배열은 연관된 데이터를 정렬, 순서대로 자동화된 처리하는 것이 반복문

 

배열과 반복문의 활용

WEB

  1. HTML
  2. CSS
  3. JavaScript

WEB

  1. HTML
  2. CSS
  3. JavaScript


출처 : 생활코딩 강의

728x90
반응형
728x90
반응형

수업의 목적

자바스크립트는 야간모드와 주간모드를 버튼을 통해 만들 수 있습니다. 즉 사용자와 상호작용 한다는 의미

1. 자바스크립트는 사용자와 상호작용하는 언어

2. 웹 브라우저는 한번 출력하면 바뀔 수 없지만 바디 태그 내 디자인을 바꿀 수 있습니다.

자바스크립트는 HTML을 제어하는 언어(동적으로 만들어주는 특성을 가짐)



HTML JavaScript의 만남 (script 태그)

HTML은 정적 JavaScript는 동적

<h1>JavaScript</h1>

<script>

  document.write(1+1); // 2

</script>

<h1>html</h1>

1+1 <!-- 1+1의 문자열을 출력 -->

 

HTML JavaScript의 만남 (이벤트)

웹 브라우저에서 일어나는 일(사건)을 이벤트라고 합니다.

웹 브라우저에서 일어나는 이벤트의 예

<input type="button" value="hi" onclick="alert('hi')">

<input type="text" onchange="alert('changed')">

<input type="text" onkeydown="alert('key down!')">




 

HTML JavaScript의 만남(콘솔)

콘솔을 통해 웹 페이지를 대상으로 자바스크립트가 실행됩니다.

 

데이터 타입 문자열과 숫자

데이터 타입은 자료형

‘hello world’.indexOf(‘o’) //4

‘hello world’.toUpperCase() // HELLO WORLD

 

변수와 대입 연산자

좌항과 우항을 결합해 우항의 결과를 만든다

name의 개수가 1억 개일 경우 변경하기 쉽지 않습니다. 변수를 지정해 값을 쉽게 변경할 수 있습니다.

 

웹 브라우저 제어

자바스크립트를 이용해 제어하고자 하는 태그를 선택하는 방법

 

CSS기초(style 속성·태그, 선택자)

<h1 style=”backgroudcolor:red;color:blue”>JavaScript</h1>

<div>JavaScript</div> <span style=”font-weight:bold;”>JavaScirpt</span> 전체를 쓰는지 안 쓰는지의 차이

반은 클래스 학생들을 그룹핑, id는 학번의 개념 중복될 수 없습니다.

<h1><a href="index.html">WEB</a></h1>

  <h2 style="background-color:coral;color:powderblue;">JavaScript</h2>

  <p>

    <span id="first" class="js">JavaScript</span> (/ˈdʒɑːvəˌskrɪpt/[6]), often abbreviated as JS, is a high-level, dynamic, weakly typed, prototype-based, multi-paradigm, and interpreted programming language. Alongside <span>HTML</span> and <span>CSS</span>, <span class="js">JavaScript</span> is one of the three core technologies of World Wide Web content production. It is used to make webpages interactive and provide online programs, including video games. The majority of websites employ it, and all modern web browsers support it without the need for plug-ins by means of a built-in <span class="js">JavaScript</span> engine. Each of the many <span class="js">JavaScript</span> engines represent a different implementation of <span class="js">JavaScript</span>, all based on the ECMAScript specification, with some engines not supporting the spec fully, and with many engines supporting additional features beyond ECMA.

</p>


출처 : 생활코딩 강의

728x90
반응형
728x90
반응형

이벤트타입

이벤트 타입이라는 것은 이벤트의 종류

 -(submit, change, blur, focus)

*submit : 폼의 정보를 서버로 전송하는 명령

*change : 폼 컨트롤의 값이 변경되었을 때 사용

*blur, focus : focus는 엘리먼트에 포커스가 생겼을 때, blur은 포커스가 사라졌을 때 발생하는 이벤트



 -문서 로딩

console.log(t); // null 을 출력, 스크립트 호출 시 id‘target’이 존재하지 않기 때문

<head>

    <script>

        window.addEventListener('load', function(){ //

            var t = document.getElementById('target');

            console.log(t); // p#target

        })

    </script>

</head>

<body>

    <p id="target">Hello</p>

</body>

load 이벤트는 문서내의 모든 리소스(이미지, 스크립트)의 다운로드가 끝난 후에 실행되기 때문에 앱의 구동이 지연되는 부작용이 초래할 수 있습니다.

DOMContentLoaded는 문서에서 스크립트 작업을 할 수 있을 때 실행되기 때문에 이미지 다운로드를 기다릴 필요가 없습니다.

실제 라이브러리 사용으로 내부적으로 알아서 채택합니다. 이벤트 타입 때문에 고민하는 경우가 없습니다. 하지만 둘의 차이는 아는 것이 중요합니다.

 -마우스

Click : 클릭했을 때 발생하는 이벤트 Dblclick : 더블클릭을 했을 때 발생하는 이벤트

Mousedown : 마우스를 누를 때 발생 Mouseup : 마우스버튼을 땔 때 발생

Mousemove : 마우스를 움직일 때 Mouseover : 마우스가 엘리먼트에 진입할 때 발생

Mouseout : 마우스가 엘리먼트에서 빠져나갈 때 발생 Contextmenu : 컨텍스트 메뉴가 실행될 때 발생

키보드 조합

event.shiftKey, event.altKey, event.ctrlKey

마우스 포인터 위치 : 이벤트 객체의 clientX clientY를 사용

jQuery이벤트(jQuery none jQuery의 비교)





jQuery를 사용하지 않았을 경우의 코드 분량에 차이가 있습니다.

또한, jQuery는 크로스 브라우징을 알아서 처리해주고, 이벤트를 보다 적은 코드로 구현할 수 있도록 합니다. 이러한 이유로 jQuery와 같은 라이브러리를 사용합니다.

-on API 사용법(On jQuery에서 가장 중요한 API)

selector 인자

<ul>

    <li><a href="#">HTML</a></li>

    <li><a href="#">CSS</a></li>

    <li><a href="#">JavaScript</a></li>

</ul>

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<script>

    $('ul').on('click','a, li', function(event){

        console.log(this.tagName); // A LI

    })

</script>

두 번째 인자에 ‘a li’ 태그를 필터링 했기 때문에 ul태그에 대한 이벤트가 발생하는 것이 아님

Late binding(존재하지 않는 엘리먼트에도 이벤트를 등록할 수 있는 기능)

다중 바인딩(하나의 엘리먼트에 여러개의 이벤트 타입을 동시에 등록하는 방법)

이벤트 제거(off를 사용)

<input type="text" id="target"></textarea>

<input id="remove"  type="button" value="remove" />

<p id="status"></p>

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<script>

  var handler = function(e){

    $('#status').text(e.type+Math.random());

  };

  $('#target').on('focus blur', handler) // focus이벤트만 삭제

  $(‘#target’).on(‘focus’, function(e){

  alert(1);

)

  $('#remove').on('click' , function(e){

    $('#target').off('focus', handler);

  })

</script>

 

네트워크통신

자바스크립트를 이용해서 웹브라우저의 통신 기능

Ajax(페이지 리로드 없이 웹페이지의 내용을 변경할 수 있는 것)

Asynchronous JavaScript And XML : 비동기적 자바스크립트와 XML

비동기적으로 자바스크립트를 이용해 서버와 통신하는 방법

if(통신완료 && 통신성공) = if(xhr.readyState && xhr.status)

POST방식

JSON(서버와 클라이언트 간의 데이터를 주고 받는 형식)

JavaScript Object Notation : 자바스크립트에서 객체를 만들 때 사용하는 표현식

JSON API

*JSON.parse() : 인자로 전달된 문자열을 자바스크립트의 데이터로 변환

*JSON.stringify() : 인자로 전달된 자바스크립트의 데이터를 문자열로 변환

Ajax JSON

Json은 모든 언어에서 객체와 배열로 사용할 수 있는 특징이 있음

JSON의 적용

var tzs = JSON.parse(_tzs); //자바스크립트의 데이터로 변환

jQueryAjax

브라우저간의 차이(크로스 브라우징)jQuery가 알아서 해결합니다.

 

http://api.jquery.com/category/ajax/

data : 서버로 데이터를 전송할 때 이 옵션을 사용

dataType : 서버 측에서 전송한 데이터를 어떤 형식의 데이터로 해석할 것인가를 지정, 값으로 올 수 있는 것은 xml, json, script, html으로 형식을 지정하지 않으면 jQuery가 알아서 판단합니다.

success : 성공했을 때 호출할 콜백을 지정, Function( PlainObject data, String textStatus, jqXHR jqXHR )

type : 데이터를 전송하는 방법을 지정, get, post를 사용

serialize() : select, texarea, text, checkbox 등의 값을 리턴

JSON처리방식



출처 : 생활코딩 강의

728x90
반응형
728x90
반응형

JSP가 내부적으로 어떻게 처리해서 동작하는 가에 대해 알아보겠습니다.

1. 사용자가 웹 브라우저에 클릭이나 submit등의 액션을 취해 요청을 합니다.

2. 웹 서버는 웹 컨테이너(WAS)에게 전달합니다.

3. 웹 컨테이너(WAS)는 요청받은 jsp파일을 servlet(HTML in Java)으로 변환합니다. (.java 파일로 변환)

4. 컴파일 하면 jsp.class파일이 생성됩니다. 

5. 컴파일 된 .class파일을 순서대로 웹 브라우저에게 응답합니다.


위와 같은 JSP 처리 과정은 최초로 요청되었을 때만 실행됩니다.

실행된 이후에는 .class파일이 남아있어 서비스합니다.


*WAS : asp, php, jsp 등 개발 언어를 읽어 동적 컨텐츠웹 응용 프로그램 서비스를 처리하는 것, tomcat

*WEB : HTML 문서와 같은 정적 컨텐츠를 처리하는 것, apache

*웹 컨테이너 or 서블릿 컨테이너 : 웹 서버에서 JSP를 요청해 톰캣에서 JSP파일을 서블릿으로 변환하여 서블릿의 결과를 웹서버의 전달하는 것





728x90
반응형
728x90
반응형

이벤트(사건을 의미)

브라우저에서 사건이란 사용자가 마우스 버튼을 클릭했을 때, 스크롤 했을 때, 필디의 내용을 바꿨을 때 등을 의미

event targert : 이벤트가 발생하는 대상

event type : onclick, onchange ‘의 의미

event handler : 이벤트가 발생했을 때 동작하는 코드

등록방법

 -inline

태그 안에 이벤트가 속성으로 들어가는 방식, this는 함수가 속한 객체를 의미

<!--자기 자신을 참조하는 불편한 방법-->

<input type="button" id="target" onclick="alert('Hello world, '+document.getElementById('target').value);" value="button" />

<!--this를 통해서 간편하게 참조할 수 있다, this input엘리먼트를 의미-->

<input type="button" onclick="alert('Hello world, '+this.value);" value="button" />

편리하지만 태그에 직접 기술됨, html이 기본적으로 추구하는 방향은 css script코드를 따로 분류하는 형태, 복잡한 코드를 넣을 수 없음

 -프로퍼티리스너

이벤트 대상에 해당하는 객체의 프로퍼티로 이벤트를 등록하는 방식

   




   

-addEventListener()

 

<input type="button" id="target" value="button" />

<script>

    var t = document.getElementById('target');

    t.addEventListener('click', function(event){

        alert(1);

    });

    t.addEventListener('click', function(event){

        alert(2);

    });

</script>

프로퍼티 이벤트로 사용시 1개의 핸들러만 사용가능하지만 add이벤트리스너는 추가합니다.

이벤트 객체를 이용하면 복수의 엘리먼트에 하나의 리스너를 등록해서 재사용할 수 있습니다.

이벤트 전파(버블링 bubbling과 캡처링 capturing)

캡처링

버블링, 이벤트 전파에 주로 사용

stopPropagation()

 

기본동작의 취소

*텍스트 필드에 포커스를 준 상태에서 키보드를 입력하면 텍스트가 입력된다.

*폼에서 submit 버튼을 누르면 데이터가 전송된다.

*a 태그를 클릭하면 href 속성의 URL로 이동한다.

기본적인 동작을 기본 이벤트라고 하는데 사용자가 만든 이벤트를 이용해 동작을 취소할 수 있습니다.

 -inline방식

 

opentutorials

   

 

 -property방식


 -addEventListener방식



출처 : 생활코딩 강의

 

728x90
반응형
728x90
반응형

Document 객체

 

 



TEXT객체

 

생활코딩

: p태그는 텍스트 객체

Hello world

Hello world

 


API

텍스트 노드는 DOM에서 실질적인 데이터가 저장되는 객체

 
  • html
  • css
  • JavaScript
 


 

조작API

<!DOCTYPE html>

<html>

<head>

    <style>

    #target{

        font-size:77px;

        font-family: georgia;

        border-bottom:1px solid black;

        padding-bottom:10px;

    }

    p{ margin:5px }

    </style>

</head>

<body>

<p id="target">Cording everybody!</p>

<p> data : <input type="text" id="datasource" value="JavaScript" /></p>

<p> start :<input type="text" id="start" value="5" /></p>

<p> end : <input type="text" id="end" value="5" /></p>

<p><input type="button" value="appendData(data)" onclick="callAppendData()" />

<input type="button" value="deleteData(start,end)" onclick="callDeleteData()" />

<input type="button" value="insertData(start,data)" onclick="callInsertData()" />

<input type="button" value="replaceData(start,end,data)" onclick="callReplaceData()" />

<input type="button" value="substringData(start,end)" onclick="callSubstringData()" /></p>


</body>

</html>

문서의 기하하적 특성

문서의 엘리먼트의 크기, 위치, 스크롤 등을 제어하는 방법

<style>

    body{

        padding:0;

        margin:0;

    }

    div{

        border:50px solid #1065e6;

        padding:50px;

        margin:50px;

    }

    #target{

        width:100px;

        height:100px;

    }

</style>

<div>

    <div id="target">

        Coding

    </div>

</div>

 


 


문서 viewport

스크롤

<style>

    body{

        padding:0;

        margin:0;

    }

    div{

        border:50px solid #1065e6;

        padding:50px;

        margin:50px;

    }

    #target{

        width:100px;

        height:2000px;

    }

</style>

<input type="button" id="scrollBtn" value="scroll(0, 1000)">

<script>

    document.getElementById('scrollBtn').addEventListener('click', function(){

        window.scrollTo(0, 1000); // x, y 좌표

    })

</script>

<div>

    <div id="target">

        Coding

    </div>

</div>

스크린 크기


스크린 크기의 정보가 중요한 이유 :

웹 페이지의 폭을 사용자의 정보를 수집해 의사결정에 도움이 됩니다.



출처 : 생활코딩 강의

728x90
반응형
728x90
반응형

+ Recent posts