반응형

** ajax : 자바 스크립트를 이용해서 도메인 내의 데이터를 비동기적으로 받아오는 기술

 

 

was는 클라이언트의 요청(url) 필요한 서비스 호출

webserverwas 필요하지만 socket서버는 was필요없다.

클라이언트 요청(url) ->필요한 서비스 호출

메뉴 클릭하고 메인쪽만 변하게 하는 것 client가 쓰기 편하게 해서 만드는 것

웹에서는 ajax이다.

web socket은 내가 close할 때 까지 계속 연결된다. : chatting일 경우

ajax는 한번 하고 끊고 해야 한다. : .id등 검사

챗봇 서비스 : web socket으로 해야 한다. 대화를 주고 받아야 한다.

네이브 광과 -----------계속 바뀐다. 바뀌는 구조

1분에 한번씩 읽어오는 것이 낫다. 일정한 주기를 가지고 통신

실시간 대화 재일 많이 하는 것 : 게임

 

체팅 따로 뜨는 것은 activex

브라우즈로 들어가면 HTML이다.

 

Database,Java,Web FrontEnd,Java Web Server Programming

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>ajax 요청</title>

</head>

<body>

           <div>고정된 내용</div>

           <div id="disp">동적으로 변경되는 내용</div>

           <div>고정된 내용</div>

          

           <script>

                      

                       //ajax를 이용해서 data.txt 파일의 내용을 읽어서 disp 영역에 출력

                       //여러번 사용할 필요 없다.

                       var disp = document.getElementById("disp");

                      

                       //ajax 객체 생성

                       var request;

                       if(window.ActiveXObject){

                                  request= new ActiveXObject("Microsoft.XMLHTTP");

                       }else{

                                  request = new XMLHttpRequest();

                       }

          

                       //요청 옵션을 생성 - data.txt GET 방식으로 요청

                       request.open('GET', 'data.txt');

                      

                       //30초마다 계쏙 수행되는 타이머

                       setInterval(function(){

                                  //요청을 전송

                                  request.send('');

                       }, 10000);

                      

                       //요청을 전송

                       request.send('');

                      

                       //비동기는 언제 종료될지 모르기 때문에 종료 된 후에 어떤 동작을 수행하고자 하면 콜백 메소드에 작성

                       //callback:어떤 이벤트가 발생하면 호출되는 메소드

                       //파일을 읽는 부분도 마찬가지 -파일을 읽어주세요 요청 - 파일을 전부 읽으면(LOAD) 동작을 수행

                      

                       //콜백 메소드를 등록

                       request.onreadystatechange = function(){

                                  //응답을 정상적으로 받은 경우

                                  if(request.readyState == 4 && request.status >= 200 && request.status < 300){

                                              //읽어온 데이터를 disp에 출력

                                              disp.innerHTML = request.responseText;

                                  }

                       }

           </script>

          

</body>

</html>

 

 

 

 

 

 

 

**json파싱

자바스크립트에서는 json문자열은 json.parse()에 대입하면 파싱을 수행해서 자바스크립트 객체로 리턴을 해줍니다.

 

[{"name" :"javascript" , "rank" :1} , {"name":"javascript","rank":2}]

 

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>ajax - json</title>

</head>

<body>

           <div id ="disp"></div>

           <script>

          

                       //1.ajax요청 객체 생성 -반드시 1

                       var request;

                       //IE와 다른 브라우즈가 ajax 요청 객체 생성 방법이 다름

                       if(window.ActiveXObject){

                                  request= new ActiveXObject("Microsoft.XMLHTTP");

                       }else{

                                  request = new XMLHttpRequest();

                       }

                      

                       //alert(request);

                      

                       //2.ajax요청 옵션을 생성 - 1번 이후이 3번보다 먼저 나오면 됨

                       request.open("GET","data.json");

                       //alert(request);

                      

                       //3.ajax 요청

                       //2 3은 순서가 있다. 만들고 보내야 하기 때문이다.

                       request.send('');

                      

                       //alert(request);

                      

                       //4.상태변화가 생겼을 때 호출될 콜백 메소드를 등록 - 1번 이후에 아무곳에서 작성해도 됨

                       //콜백(이벤트 처리) 메소드는 순서와 상관 없이 이벤트가 발생했을 때 호출되는 메소드1111

                       request.onreadystatechange = function(){

                                  //정상적으로 받아오는 경우

                                  if(request.readyState == 4 & request.status >= 200 && request.status < 300){

                                              //받아온 문자열

                                              var res = request.responseText;

                                              //json파싱 - 객체의 배열이 만들어집니다.

                                              var result = JSON.parse(res);

                                              //alert(result);

                                              //출력할 영역 찾기

                                              var disp = document.getElementById("disp");

                                             

                                              html = "";

                                              //배열 순회

                                             for(var idx in result){

                                                         //alert(result[idx]);

                                                         html += "<p>" + result[idx].name +":"+result[idx].rank+"</p>";

                                              }

                                              disp.innerHTML = html;

                                  }

                       };

                      

           </script>

</body>

</html>

 

 

**jquery

=>크로스 브라우징 지원을 위한 자바스크립트 라이브러리

=>jquery를 이용하면 ie와 다른 브라우저를 구분하는 코드를 만들 필요가 없습니다.

=>ajax 사용이나 애니메이션 같은 처리를 쉽게 처리해 줍니다.

=>다양한 플러그인들이 개발되어 있어서 복잡한 ui처리 등을 단순하게 처리할 수 있도록 해줍니다.

=>실무에서 많이 사용하기는 하지만 절다적이지는 않습니다.

=>jquery 의 링크를 먼저 실행하고 jquery를 사용해야 하고 서로 다른 버전의 링크를 만들면 안되고 동일한 파일의 링크를 2개 이상 작성해도 안됩니다.

 

1.사용방법

1)CDN(Content Delivery Network - 필요한 자원을 모아놓은 네트워크)의 링크를 이용

=>네트워크가 연결되지 않으면 사용할 수없습니다.

 

2)다운로드 받아서 프로젝트에 복사한 후 사용

open source

직접 link를 걸어서 사용할 수 있다. 여러개 사용할 경우에는 link가 복잡해진다.

open source

 

여러개의 open source를 받아서 repository에 담는다.

link repository의 것을 사용한다.

1)    실수를 줄일 수 있다. lincese문제

2)    일일이 링크를 알 필요없다. 네트워크의 영향을 받지 않는다. 나한테 가까운 것을 사용하는 게 유리하다.

https://jquery.com/download/

 

같은 소스여도 무료인것 있고

 

 

 

2.//로 시작하는 url은 상황에 따라 http:// https:// 연결한다는 의미

https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js주소를 browser에 해보면

 

 

 

3.javascript파일의 이름에 min이 포함되어 있으면 이 파일은 용량을 줄이기 위해서 공백을 최소화한 파일입니다이파일 경로에서 min.을 지우면 공백이 포함된 파일의 경로입니다.

공백이 포함된 파일은 학습용이고 공백이 제거된 파일은 개발용입니다.

min이 있으면 지워도 된다.

 

jquery차트 plugin

 

 

 

http://www.jqplot.com/examples/kcp_area.php

https://jqueryui.com/download/

https://getbootstrap.com/docs/4.4/getting-started/introduction/

다운로드 받아서 link설정해서 사용해야 한다.

 

4.jquery 플러그 인을 사용할 때는 다운로드 받아서 링크 부분을 수정해야 합니다.

 

**html5

=>플로그인 설치 없이 웹 애플리케이션을 만들기 위한 api가 추가된 html4 의 다음 버전

1.semantic tag 추가

=>의미전달을 위한 태그 - 이전에는 div로 생성

<article></article> 눈으로만 보면 div 와 아무런 차이가 없습니다.

로봇이 보면 div 는 그냥 영역이라고 판단하지만 article은 기사의 본문이라고 판단

이전에는 div 를 만들고 class속성을 추가해서 의미를 전달

이런 요소로 <header>,<section>,<article>,<aside>,<nav>,<footer>가 추가됨

nav 제목이구나 눈으로는 확인할 수 없다.

 

2.WebStorate

=>브라우저 안에 자바스크립트 객체를 저장

WEB저장소 API가 추가됬다.(session, cookie)

 

3.WebSQL

=>관계형 데이터베이스 사용

 

4..IndexedDB

=>데이터베이스 NoSQL과 유사한 데이터베이스 사용

 

5.Drag& Drop추가

 

6.geoLocation: 브라우저에서 위치 정보 사용 가능

(어디에서 로그인하는지 )

 

7.canvas: 2D3D 드로윙 가능

=>3dwebgl을 이용

 

8.webWorkr:스레드 api

웹브라우저 가운데도 백그라운드에서 인식 가능하다.

 

9.wEB Socket: httphttps는 한 번 데이터를 전송받으면 연결 해제되는데 WebSocket은 연결을 유지하는 것이 가능한데 프로토콜은 ws (채팅서비스)

 

10. Web Push:클라이언트의 요청없이 서버가 클라이언트에게 메시지를 전송하는 기술

 

WebSocketWebPush는 서버없이는 데스트가 불가능

HTML5semantic tag가 전부가 아님

 

 

 

**자바 웹 프로젝트의 실행

1.eclipse에서 실행

=>프로젝트가 자신의 워크스페이스의

C:\project\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 디렉토리에 프로젝트가 복사되서 실행

tmp는 바꿀 수 있다.

실행이 되는 프로젝트는 복사된 프로젝트인지 소스 코드를 작성하고 있는 프로젝트가 아닙니다.

.이 붙는 디렉토리는 unix(mac os x), linux에서는 숨김 디렉토리입니다.

Mac에서 단축키가 shift +command+. 을 누르면 숨김 디렉토리가 보여집니다.

 

프로젝트에 어떤 파일을 만들어주고 읽을려고 헀는데 실행을 하할 때 실수로 만들지 않은 경우 프로젝트에 새로 만들어도 반영이 안되는 경우가 있습니다.

이런 경우에는 실행이 되는 프로젝트에 파일을 만들어 주면 됩니다.

 

실행하고 있을 떄는 이 위에 경로에것 사용한다. 데이터를 변경해도 변경하지 않는다.

 

 

[{"name" :"javascript" , "rank" :1} , {"name":"javascript","rank":2}]

대괄호가 배열

중괄호가 객체

동기 : 순서가 존재하다.

비동기 : 순서 가 없다.

스레드는 비동기이다.

 

 

 

 

 

 

 

 

 

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-5  (0) 2020.10.15
frontEnd-4  (0) 2020.10.12
frontEnd-3  (0) 2020.10.12
frontEnd-2  (0) 2020.10.12
frontEnd-1  (0) 2020.10.10
반응형

**DOM(Document Object Model)

1.정의

=>웹 브라우저가 HTML이나 XML 문서를 인식하는 방식 : 문서의 구조를 트리 형태로 펼쳐 놓은 것

=>document 객체와 관련된 객체의 집합: body 태그 내에 존재하는 태그

body 태그: document.body

 

2.document 객체의 프로퍼티 나 메소드

document.body: body 태그

document.innerHTML: body 태그 내의 내용 - HTML을 기재하면 body 태그에 출력

document.write writeln(HTML 내용): innerHTML 속성에 기재한 것과 동일한 효과

 

document.referrer: URL에 어떻게 접근했는지를 저장하고 있는 속성, 마케팅에서 중요한 속성

=>웹 사이트의 메인 페이지에 어떻게 접속했는지 어떤 페이지에 어떻게 접속했는지를 아는 것은 웹 로그 분석에서 가장 중요한 이슈 중의 하나

이러한 데이터를 수집해서 대시보드에 출력할 수 있도록 해주는 솔루션 중의 하나가 구글 애널리틱스입니다.

 

3.document 객체를 이용한 문서 객체(태그) 가져오기

document.getElementById(id): id를 가진 객체 1개를 리턴 - 가장 권장

document.getElementsByName(name): name을 가진 객체를 배열로 리턴

document.getElementsByTagName(tag): tag을 가진 객체를 배열로 리턴

document.getElementsByClassName(class): class를 가진 객체를 배열로 리턴

 

document.폼이름.요소이름 으로 폼의 요소에 접근 - 최근에는 권장하지 않음

 

document.getElementById(select id).options[index]를 이용해서 select의 각 옵션에 접근할 수 있고 document.getElementById(select id).options[document.getElementById(select id).selectedIndex]

=>최근의 html을 구현할 때 테이블에 출력할 수 있는 개수를 선택하도록 하는 경우가 많습니다.

select에서 선택한 데이터를 찾아올 수 있어야 합니다.

 

4.DOM 객체의 속성 사용

1)속성 변경

DOM객체.속성이름 = ;

=>img 태그의 이미지 파일 경로 변경

img객체.src = "이미지 파일 경로";

 

2)스타일시트 값 변경

DOM객체.style.속성이름 = ;

 

3)태그 내용 변경

DOM객체.innerHTML = ;

 

4)폼의 입력 객체들의 값을 변경하거나 가져올 때는 value 속성 이용

DOM객체.value

 

5)body 태그의 내용을 자바스크립트에서 수정할 때는 태그의 내용이 먼저 나오고 스크립트가 나와야 합니다.

스타일시트는 body에 내용을 전부 읽고 화면에 출력할 때 적용되기 때문에 style body 태그의 내용이 나오기 전이나 후 상관이 없습니다.

 

**DOM 객체의 이벤트 처리

1.event

=>사용자나 시스템이 다른 것에 영향을 미치는 사건

=>input 객체 안에서 사용자가 키보드를 누르는 것 등

 

2.javascript 의 이벤트

=>마우스 이벤트

=>키보드 이벤트

=>DOM 객체 관련 이벤트

=>기타 이벤트

 

3.이벤트 처리 방식

1)인라인 방식

<태그 on이벤트이름="이벤트 처리 내용"></태그>

 

2)스크립트 안에서 작성 - 고전적 이벤트 처리

DOM객체.on이벤트이름 = function(매개변수){

           이벤트 처리 내용;

}

 

3)스크립트 안에서 작성 - 표준 이벤트 모델

DOM객체.addEventListener("이벤트이름", function(매개변수){

           이벤트 처리 내용;

});

<body>

           <span id="disp">텍스트</span>

           <!-- 인라인 이벤트 모델: 태그 안에서 이벤트 처리

           태그에 스크립트 코드가 알아보기가 어렵고(유지보수가 어려움) 길게 작성하기가 어려움 -->

           <input type="button" id="stylebtn" value="글자색상변경"

           onclick="document.getElementById('disp').style.color='red';"/>

          

           <input type="button" id="contentbtn" value="텍스트 내용 변경"/>

           <input type="button" id="standardbtn" value="내용과 스타일 변경"/>

          

           <script>

                       //DOM 객체 찾기

                       var disp = document.getElementById("disp");

                       var contentbtn = document.getElementById("contentbtn");

                       var standardbtn = document.getElementById("standardbtn");

                      

                       //고전적 이벤트 처리 모델 - 이전에도 많이 사용했고 최근에도 많이 사용

                       contentbtn.onclick = function(e){

                           //태그 안의 내용 변경

                                  disp.innerHTML = "변경된 텍스트";

                       };

                      

                       //표준 이벤트 처리 모델 - W3C에서 권장

                       standardbtn.addEventListener("click", function(e){

                                  disp.innerHTML = "표준 이벤트 모델";

                                  disp.style.backgroundColor = "papayawhip";

                       });

                      

           </script>

</body>

 

4.이벤트 처리 함수에 넘어가는 데이터

1)this: 이벤트가 발생한 객체로 별도의 설정없이 바로 사용 가능

 

2)이벤트 처리함수의 매개변수

=>매개변수가 1개가 넘어가는데 이 매개변수가 이벤트 처리 객체

=>이벤트에 대한 정보를 가지고 넘어갑니다.

=>이벤트 처리 객체는 브라우저 별로 다르게 가져와서 사용합니다.

=>웹 클라이언트에서는 IE를 고려해야 합니다.

=>IE에서는 window.event로 가져오고 나머지 브라우저에서는 이벤트 처리함수의 매개변수를 이용

 

function(e){

           //e true이면 e를 대입하고 아니면 window.event를 대입

           //숫자 0이나 객체가 null 이면 false로 간주

          //python이나 javascript 와 같은 script 계열(R, Kotlin, Swift )의 언어에서 많이 등장하는 방법

           var e  = e || window.event;

}

 

3)이벤트 처리 객체의 속성

=>data: 드래그 앤 드랍을 했을 때 드랍되는 데이터

=>modifier: 같이 누른 조합키

=>screenX, screeeY: 이벤트가 발생한 좌표 - 마우스 이벤트에서 이용

=>which: 키보드이벤트에서 누른 키보드의 ascii 코드 값

 

5.이벤트 트리거

=>객체의 이벤트를 강제로 발생시키는 것

객체.on이벤트명() 으로 이벤트를 강제로 발생시킬 수 있습니다.

 

6.DefaultEvent

=>일부 객체는 기본적인 이벤트 처리 코드가 포함되어 있습니다.

a 태그는 클릭을 하면 href 속성에 대입된 URL로 이동

submit form의 데이터를 서버에게 전송합니다.

reset form의 데이터를 삭제

<button> 태그로 만들어지 버튼은 form안에 있는 경우 submit으로 동작

 

=>기본 이벤트 처리 코드를 동작하지 않도록 하고자 할 때는 이벤트 처리 객체가 preventDefault() 메소드를 호출하면 됩니다.

preventDefault()->이벤트를 처리안하고자 할 경우이다.

 

7.이벤트 버블 방지 - 버블은 겹치는 이벤트가 있을 경우 처리

없을 경우 부모것만 띄워준다.

=>포함하고 있는 객체와 포함된 객체에 이벤트 처리 코드가 모두 작성된 경우 포함된 객체에서 이벤트가 발생하는 경우 포함하고 있는 객체의 이벤트 발생을 Event Bubbling 이라고 합니다.

=>자바스크립트에서는 이벤트 버블링을 방지하기 위해서는 IE에서는 이벤트 처리 객체의 cancelBubble 이라는 속성에 true를 대입하면 되고 그 이외의 브라우저는 stopPropagation()이라는 함수를 호출하면 됩니다.

 

8.이벤트 종류

1)click: 마우스로 클릭

 

2)dblclick: 더블 클릭

 

3)keyboard 이벤트

=>keydown -> keypress ->keyup

=>키보드를 누르면 keydown keyup이 호출

=>문자 키를 누르고 누르고 있는 경우에 keypress 이벤트가 발생합니다.

=>이벤트 객체의 which 속성이 누른 키값을 리턴하는데 이 속성이 없으면 keyCode 속성을 이용해서 누른 키값을 가져옵니다.

 

4)mouse 이벤트

=>mousedown, mousemove, mouseout(마우스 영역 바깥으로 나갈 때), mouseover(마우스가 영역 안으로 들어온 경우), mouseup

 

5)move resize

=>move resize window객체나 frame 객체에 발생하는 것으로 이동하거나 크기가 변경되었을 때 발생하는 이벤트

 

6)포커스 관련 이벤트

=>포커스를 가졌을 때 발생하는 이벤트: focus, focusin

=>포커스를 잃어버릴 때 발생하는 이벤트: blur, focusout - id 입력란에서 포커스를 잃어버릴 중복검사를 수행하는 경우가 많습니다.

 

7)change

=>선택 가능한 객체들에서 선택을 변경했을 때 호출되는 이벤트

 

8)unload load 이벤트

=>load window file, image 객체들에서 내용을 읽고난 후 발생하는 이벤트

window.load는 모든 태그를 읽고 난 후 발생하는 이벤트

이 이벤트를 처리하는 코드는 모든 태그를 인식하고 난 후 수행

script body 위에 작성하는 경우

window.addEventListener("load", function(e){

 

}) 또는

window.onload = funcation(e){

 

}

모든 태그를 읽어냈기 때문에 document.getElementById(id)로 모든 태그를 가져올 수 있습니다.

 

=>file을 읽는 이벤트는 비동기적으로 동작

file의 내용을 읽어서 어딘가에 출력하고자 하는 경우 읽기 메소드를 호출하고 load 이벤트 처리 코드 안에 작성해야 합니다.

file을 읽는 메소드를 호출하고 바로 출력하는 메소드를 호출하면 파일의 내용은 아직 읽지 못한 상태일 가능성이 높아서 출력되지 않습니다.

 

=>window.unload는 브라우저가 닫힐 때 발생하는 이벤트

서버에서 세션과 쿠키의 개념을 사용하는데 보통 사용자가 더이상 서버에 접속되어 있지 않으면 세션을 소멸시켜야 하는데 브라우저가 강제로 닫히는 경우 서버의 이벤트로는 감지할 수 없습니다.

unload 이벤트와 ajax를 이용해서 처리해야 합니다.

 

9)submit reset

=>form에서만 발생하는 이벤트로 submit submit 버튼을 누른 경우이고 reset reset 버튼을 누른 경우에 발생하는 이벤트

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>다양한 이벤트 처리</title>

 

<script>

//window가 로드 되면 function을 수행

//window load 된다는 것은 태그를 전부읽고 메모리에 올리고 난 후

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

           var n = document.getElementById("name");

           n.value="이름을 입력하세요!"

          

           //포커스가 생길 때

           n.addEventListener("focusin", function(e){

                       this.style.backgroundColor = "papayawhip";

           });

           //포커스가 없어질 때

           n.addEventListener("focusout", function(e){

                       this.style.backgroundColor = "white";

           });

           //키보드를 눌렀을 때 누른 키 값을 대화상자에 출력

           n.addEventListener("keydown", function(e){

                       //이벤트 객체 만들기

                       var e = window.event || e;

                       //누른 키 값 가져오기

                       //IE가 아닌 경우는 이벤트 객체의 which 속성으로 그리고 IE 이면 keyCode 속성으로 누른 키값을 가져옵니다.

                       var code = e.which ? e.which : e.keyCode;

                       alert(code)

           })

});

          

</script>

 

</head>

<body>

           <input type="text" id="name" size="20"/>

           <input type="text"  size="20"/>

</body>

</html>

 

 

 

**정규 표현식(Regular Expression)

=>문자열의 패턴을 정의하는 객체

=>문자열 검색이나 가공에 사용

=>원래는 Perl에서 시작되었지만 지금은 거의 모든 언어에서 사용

=>regexp 로 표현하는 경우가 많습니다.

=>규칙은 단순한데 가독성은 떨어짐

 

1.객체 생성

1)new RegExp(패턴, 한정자)

2)/패턴/한정자

=>한정자는 생략 가능

 

2.정규식 메소드

1)test(): 정규 표현식과 일치하는 문자열이 포함되어 있으면 true 없으면 false 리턴

2)exec(): 정규 표현식과 일치하는 문자열을 리턴

<script>

       var msg = "안녕하세요 1반갑습니다.";

       //msg 숫자가 포함되어 있는지 확인

      

       //정규식 패턴을 생성

       var reg = /[0-9]/;

      

       //msg reg 패턴이 존재하면

       if(reg.test(msg)){

               console.log("숫자가 포함되어 있습니다.");

       }else{

               console.log("숫자가 포함되어 있지 않습니다.");

       }

      

       msg = "문을 문이 안녕하세요 안녕문"

       //정규식을 기준으로 분할해서 배열로 리턴

       var result = msg.split(//)

      

       for(i in result){

               document.write(result[i] + "<br/>");

       }

      

       //처음 만나는 문은 삭제 아무것도 없는 글자와 치환

       //gm 이라는 한정자를 사용했기 때문에 문자열의 모든 곳에서 치환

       result = msg.replace(//gm, "")

       document.write(result + "<br/>");

      

      

</script>

 

</head>

<body>

 

</body>

</html>

 

3.String 객체의 정규식 관련 메소드

=>match(정규식): 정규식과 일치하는 부분을 리턴

=>replace(정규식, 대체문자열): 정규식을 대체문자열로 치환

대체문자열 자리에 $& 를 설정하면 원래 문자열

=>search(정규식): 정규식이 나오는 부분의 위치를 리턴

=>split(정규식): 정규식을 기준으로 분할해서 배열로 리턴하는 함수

 

4.한정자(제한자, 플래그)

i:대소문자 구분하지 않고

g:끝까지 반복 수행

m:여러 줄일 때 사용

 

/패턴/한정자

한정자는 여러 개 사용 가능

 

5.앵커문자

^: 패턴 앞에 붙이면 패턴으로 시작하는

$: 패턴 뒤에 붙이면 패턴으로 끝나는

/^/

문 으로 시작 하는

 

/$/

문으로 끝나는

 

 

 

 

 

 

 

6.메타문자

=>. : 아무글자1

=>[문자나열] : 문자 중 1

[abc] abc 중에서 1

=>[^문자나열] : 나열된 문자를 제외하고

=>[문자1-문자2] : 문자1에서 문자2 사이

[-]: 한글 1

[0-9]: 숫자 1  

[0-9a-zA-Z]:숫자나 영문 1글자

=>\d: 숫자 \D: 숫자가 아닌

=>\w:단어 \W: 단어가 아닌

=>\s: 공백문자(공백, , 엔터 등) \S: 공백문자가 아닌

 

7.수량문자

A+: 1개 이상

A*: 0개 이상

A?: 0개 또는 1

A{2}: 2개 이상

A{2,5}: 2-5

A{2,}: 2개 이상

 

8.자주 사용되는 패턴들(email, 비밀번호, 전화번호 등)은 인터넷에 검색해도 됩니다.

정규식은 유효성 검사나 텍스트 가공에 많이 사용

 

=>이메일과 비밀번호가 패턴에 맞지 않으면 서버로 전송하지 않도록 하기

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>웹 브라우저에서의 유효성 검사</title>

 

<script>

           window.addEventListener("load", function(e){

                       //body 태그 안에서 필요한 객체 찾아오기 - id를 이용해서 찾아오기

                       var myform = document.getElementById("myform");

                       var errordiv = document.getElementById("errordiv");

                       var email = document.getElementById("email");

                       var pw = document.getElementById("pw");

                      

                       //이메일 정규식을 생성

                       var emailreg = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

                       //비밀번호 정규식을 생성

                       var pwreg = /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/;

                      

                       //폼의 전송 이벤트가 발생하면 유효성 검사를 수행

                       myform.addEventListener("submit", function(e){

                                  //email 란에 입력된 문자열에 emailreg가 포함되지 않았다면

                                  if(emailreg.test(email.value) == false){

                                              //에러 메시지 출력

                                              errordiv.innerHTML = "이메일 입력 형식이 잘못되었습니다.";

                                              errordiv.style.color = "red";

                                              //포커스 이동

                                              email.focus();

                                              //기본적으로 제공되는 이벤트 처리 코드를 제거 - 폼의 데이터가 전송되지 않음

                                              var evt = window.event || e;

                                              evt.preventDefault();

                                              return;

                                  }

                                  if(pwreg.test(pw.value) == false){

                                              //에러 메시지 출력

                                              errordiv.innerHTML = "비밀번호 입력 형식이 잘못되었습니다.";

                                              errordiv.style.color = "red";

                                              //포커스 이동

                                              pw.focus();

                                              //기본적으로 제공되는 이벤트 처리 코드를 제거 - 폼의 데이터가 전송되지 않음

                                              var evt = window.event || e;

                                              evt.preventDefault();

                                              return;

                                  }

                                 

                       });

 

           });

          

           try{

                       //이 문장에서 예외가 발생하면 멈추지 않고 catch 구문으로 이동하기 때문에 멈추지 않습니다.

                       var ar = new Array(4300000000);

           }catch(e){

                       console.log("배열 생성에 실패했습니다.")

           }

          

           alert("여기까지 수행")

</script>

 

</head>

<body>

           <form action="server.jsp" id="myform">

                       <div id="errordiv"></div>

                       <label for="email">이메일</label>

                       <input type="text" size="40" id="email" name="email"/><br/>

                      

                       <label for="pw">비밀번호</label>

                       <input type="password" size="20" id="pw" name="pw"/><br />

                      

                       <label for="name">이름</label>

                       <input type="name" size="15" id="name" name="name"/><br/>

                      

                       <input type="submit" value="전송"/>

           </form>

          

           <script>

                      

           </script>

</body>

</html>

 

**예외처리(exception handling)

=>Exception(예외): 문법적인 오류는 아니어서 실행은 되지만 실행 도중에 문제가 발생해서 중단되는 현상

=>Exception Handling: 이러한 예외가 발생했을 때 처리하기 위한 작업

1.예외처리의 목적

=>예외가 발생하더라도 정상적으로 코드를 계속 수행하기 위해서 : 서버에서

=>예외가 발생한 경우 그 예외 상황을 기록하기 위해서 : 문제점을 해결하거나 다음에는 이러한 예외가 발생하지 않도록 하기 위해서

 

2.예외처리 방법

try{

           예외 발생 가능성이 있는 코드;

}catch(예외 객체 변수 이름){

           예외가 발생한 경우 처리할 코드;

}finally{

           예외 발생 여부에 상관없이 수행할 코드;

}

 

3.예외 처리 객체의 속성

message: 예외 메시지

description: 예외에 대한 설명

name: 예외 이름

=>이 속성들은 대부분 로그 파일에 출력합니다.

 

 

**ajax(Asynchronous JAvascript XML)

=>비동기적으로 도메인 내의 데이터(XML 형식)를 가져오는 기술

=>이 기술을 대부분 현재 화면 내부에서 일부분을 주기적으로 교체하기 위해서 사용했기 때문에 하나의 웹 페이지에서 전체 갱신없이 일부분의 데이터를 갱신하는 기술로 여겨집니다.

 

1.ajax 요청 방법

1)XMLHttpRequest 객체 생성

 

2)요청 후 결과가 오면 호출되는 리스너를 등록(콜백함수를 등록)

=>데이터(csv, xml, json)를 정상적으로 받아오면 수행할 내용을 작성

 

3)서버로 보낼 데이터(파라미터)를 생성

 

4)요청

 

2.ajax 요청 객체 생성

=>IE: ActiveXObject("Microsoft.XMLHTTP") 로 생성

=>그 이외 브라우저: new XMLHttpRequest()로 생성

 

3.XMLHttpRequest 객체의 속성과 메소드

=>readyState: 한자리 정수로 객체의 상태를 나타내는 속성

1이면 객체 생성 직후이고 2이면 요청을 한 상태이고 3이면 서버에서 응답이 오고 있는 상태이고 4이면 응답 완료

 

=>status: 응답의 상태를 나타내는 코드 - 웹 과 관련된 개발자가 될 때는 외워야 합니다.

100번대: 처리 중

200번대: 정상 응답

300번대: 리다이렉트 중 - 결과 URL로 이동 중

400번대: 클라이언트 오류

500번대: 서버 오류

 

=>responseText: XML 형식을 제외한 데이터

=>responseXML: XML 데이터

 

=>onreadstateChange: readyState가 변경될 때 호출될 콜백 메소드 지정

 

=>open(요청방식, 요청주소, 비동기여부): ajax 요청 옵션 설정

=>send(파라미터): 실제 전송

 

4.ajax에서 주의 사항

=>ajax는 도메인(현재 프로젝트) 내의 데이터만 가져올 수 있음

=>외부 데이터를 가져와서 ajax로 사용하고자 하는 경우는 proxy를 구현해야 합니다.

proxy는 서버용 언어(Java HttpURLConnection 클래스)로 데이터를 가져와서 넘겨주는 형태를 구현하는 것

 

5.텍스트 파일에서 데이터를 읽어와서 출력하기

1)프로젝트의 WebContent 디렉토리에 텍스트 파일 1개 생성

=>data.txt

Database,Java,Web FrontEnd,Java Web Server Programming

 

2)ajax 요청 파일을 생성

=>ajax.html

 

 

**HTML, CSS, JavaScript

HTML: 웹 문서의 구조를 만들기 위해서 사용, 정적(만들면 변경이 안됨)

CSS: HTML 문서의 스타일을 변경하기 위해서 사용, 정적(만들면 변경이 안됨)

JavaScript: HTML 문서의 구조를 동적으로 변경하기 위해서 사용

 

=>HTML JavaScript는 한 줄 씩 읽으면서 수행을 하고 CSS는 문서를 전부 읽고 화면에 출력되기 전에 적용을 합니다.

=>각각의 역할이 다르기 때문에 별도의 파일에 만들어서 읽어내는 구조를 취하는 것이 좋습니다.

=>최근의 Application 개발 기법에서는 대부분 화면구조를 나타내는 디자인 파일과 이 구조를 가지고 동적인 작업을 하는 소스코드를 분리해서 작업을 합니다.

Android iOS(Mac OS 포함) 그리고 MS-Windows Programming이 이러한 방식을 취합니다.

이러한 방식이 만들 때는 복잡하지만 코드의 분리로 인해서 가독성이 높아져서 유지보수에 유리합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-6  (0) 2020.10.15
frontEnd-4  (0) 2020.10.12
frontEnd-3  (0) 2020.10.12
frontEnd-2  (0) 2020.10.12
frontEnd-1  (0) 2020.10.10
반응형

**제어문

1.for

=>반복문

for(처음 한번만 식 ; 비교식;두번쨰 수행하는 식){

           반복내용;

}

=>실행방법 : 처음 수행되는 식을 수행하고 비교식의 값이 false가 아니면 {}안의 내용을 수행

수행을 완료하면 두번쨰 부터 수행하는 식을 수행하고 비교식의 값이 false가 아니면{}안의  내용을 수행

두번째 수행하는 식을 수행하고 비교식이 false가 될때 까지 반복

 

=>각각의 식이 생략 가능

for(var i =0; i< 10; i++){

                       document.write("<p>"+"Hello JavaScript"+"</p>");

           }

 

2.while

=>반복문

while(boolean 결과가 나오는 변수나 연산식 또는 상수){

           ()의 내용이 false가 아니면 수행될 내용;

}

           var i = 0;

           while(i<10){

                       document.write("<p>"+"Hello JavaScript"+"</p>");

                       i++;

           }

 

3.do ~ while

do{

  반복할 내용

}while(boolean결과가 나오는 변수나 연산식 또는 상수);

=>()안의 내용이 false가 될떄 까지 {}안의 내용을 반복 수행

=>한 번은 반복 내용을 수행

           //do ~ while은 반드시 한번은 수행한다라는 의미를 전달할 목적으로 많이 사용

           var i =0;

           do{

                       document.write("<p>"+"Hello JavaScript"+"</p>");

                       i++;

           }while(i<10); //()

 

 

4.for -in

=>for each라고도 함

=>데이터의 모임을 순회하기 위한 제어문

for 임시변수 in 데이터의 모임{

           모임을 순회하면서 수행할 내용

}

=>배열의 경우는 임시변수에 인덱스가 대입됩니다.

=>객체의 경우는 임시변수에 속성이 대입됩니다.

           var ar = ["JavaScript","TypeScript"];

           //배열을 순회

           //temp가 인덱스가 대입됩니다.

           for(var temp in ar){

                       document.write("<p>"+temp+"</p>");

           }

 

           var ar = ["JavaScript","TypeScript"];

           //배열을 순회

           //temp가 인덱스가 대입됩니다.

           for(var temp in ar){

                       document.write("<p>"+ar[temp]+"</p>");

           }

 

 

           //javascript에서느느 객체의 속성을 잘 알려고 할 때

           //location 객체의 모든 속성을 확인

           //객체를 for에 대입하면 모든 속성을 임시변수에 대입

           //location이 가지고 있는 것이 나온다.

           for(var attr in location){

                       document.write("<p>"+attr+"</p>");

           }

 

5.제어문의 중첩

=>제어문 안에 다른 제어문을 작성하는 것이 가능

=>먼저 시작한 제어문이 나중에 끝나야 합니다.

먼저 시작한 제어문을 시작하면 포함된 제어문을 전부 수행하고 먼저 시작한 제어문의 다음으로 넘겨갑니다.

 

0 ***** 0-4

1 ****  0-3

2 ***   0-2

3 **    0-1

4 *     0-0

 

라인은 0부터 4까지

라인 안에서 별은 0부터 시작

4->3->2->1->0 :-1씩 증감

-1* 라인 +4

 

           for(var line = 0 ;  line <5 ;line ++){

                       for(var i = 0; i < 5-line ; i++){

                                  document.write("*");

                       }

                       document.write("<br/>");

           }

 

6.break

=>반복문이나 switch 안에 사용되서 반복문이나 switch구문을 종료하는 역할

 

 

7.continue

=>반복문에 사용되서 다음 반복으로 넘어가는 역할

 

8.breakcontinue가 반복문에 사용될 때는 대부분 if와 함께 사용

반복문이 중첩된 경우 breakcontinue는 가장 가까운 곳에서 만들어진 반복문을 종료하거나 다음 반복으로 넘어갑니다.

 

9.return

=>함수 안에 사용되서 함수의 종료(호출한 곳으로 리턴)하고 데이터를 넘겨주는 제어문

=>함수안에서 if구문과 함께 return이 작성되면  return이후에  else를 하지 않더라도 else구문이 됩니다.

 

if(조건(){

           return;

}

내용 //else를 작성하지 않더라도 내용은 else에 있는 것과 동일하게 동작

 

10.제어문 작성시 주의사항

=>(조건식);에 주의해야 합니다.

do ~while을 제외하고는 (조건식)뒤에 ;을 할 필요가 없습니다.

;을 하게되면 제어문이 없는 것과 마찬가지가 됩니다.

 

for(var i =0; i< 10; i++{

           반복내용;

}

반복내용을 1번만 수행합니다.

 

=>제어문 다음에 수행할 내용이 한줄이면 {}를 생략하는 것이 가능

반복문이 중첩되는 경우에 {}를 생략하면 코드를 읽는 것이 어려워질 수 있기 때문에 생략하지 않는 경우가 더 많습니다.

제어문을 중첩을 할 떄는 들여쓰기를 적절히 이용해서 블록을 정확하게 만들어주는 것이 가독성을 높이는 방법 중의 하나입니다.

           //1부터 10까지 출력 - 3의 배수가 되면 종료

           for(var i = 1; i <11; i++){

                       //제어문에서 수행 내용이 1줄이면 {} 생략 가능

                       if(i % 3 ==0)break;

                       document.write(i+"<br/>");

           }

          

          

           //1부터 10까지 출력 - 3의 배수인 경우는 수행하지 않음

           //continue는 특정 조건을 만족하는 경우 수행하지 않도록 할 때 사용

           for(var i = 1; i <11; i++){

                       //제어문에서 수행 내용이 1줄이면 {} 생략 가능

                       if(i % 3 ==0)continue;

                       document.write(i+"<br/>");

           }

 

**Function(함수)

1.함수

=>자주 사용되는 또는 독립적으로 수행하고자 하는 내용을 묶어서 하나의 이름으로 설정해 놓은 것

=>함수 부터가 작업의 단위

=>함수부터가 작업의 단위이면 독립적인 메모리를 할당 받을 수 있는 단위

함수 안에서 만들어진 변수는 함수 내에서만 사용이 가능

 

 

2.함수의 종류

1) 사용자 정의 함수: 개발자가 만든 함수

 

2)Maker Function : 제공되는 함수 - 자바스크립트에서는 window 객체의 내장함수

자바스크립트에서는 window객체의 속성이나 함수는 window.을 생략하고 호출이 가능하기 때문

 

 

3.함수의 정의

=>자바스크립트에서는 함수도 하나의 자료형(함수가 일급 객체 - python, c에서도 동일)

1)

var 함수명 = function(매개변수 나열){

           함수 내용;

           return;

}

 

2)

function 함수명 (매개변수 나열){

           함수 내용;

           return;

}

=>예전에는 2번째 방법으로 함수를 만들었는데 최근에는 1번째 방법을 권장

 

           var func = function(){

                       //어떤 변수나 연산식의 결과를 확인하고자 할 때 콘솔에 출력해봅니다.

                       console.log("함수");

           }

          

           func()

           //()을 하지 않고 함수를 호출하면 함수가 저장된 곳의 위치나 함수의 내용

           document.write(func)

 

4.함수 호출

함수명(매개변수)

=>함수명만 입력하면 이것은 함수의 참조를 리턴합니다.

함수의 내용이 됩니다.

 

5.매개변수(argument)

=>함수를 호출 할 때 넘겨주는 데이터

1)매개변수 를 만들 때 매개변수의 자료형은 개재하지 않습니다.

fuction(a){}

 

2)함수를 호출할 때 매개변수 대입을 생략할 수 있습니다.

매개변수가 있는데 데이터를 대입하지 않으면 그 매개변수는 undefined가 됩니다.

 

3)함수를 정의할 때 매개변수를 기재하지 않았더라도 함수 내부에서 매개변수를 사용할 수 있느데 이 때는 매개변수들이 arguments라는 뱅열로 만들어집니다.

           //매개변수가 2개인 함수

           var func1= function(a,b){

                       console.log(a);

                       console.log(b);

           }

           //2개의 매개변수를 대입해서 함수를 호출

           func1(100,200);

           //1개의 매개변수만 대입 -대입하지 않은 b undefined

           func1(300);

          

           //매개변수가 없지만 함수내에서 arguments라는 배열로 매개변수를 받릉 수 있습니다.

           //자바스크립트나 파이썬의 함수들은 도큐먼트를 읽고 사용하는 것이 좋습니다.

           var func2= function(){

                       for (var i in arguments){

                                  console.log(arguments[i])

                       }

           }

           func2(200,900);

 

6.return

=>함수를 호출한 곳으로 돌아가는 제어문

=>return 데이터 형태로 데이테를 가지고 return할 수 있습니다.

=>return 할 데이터가 없다면  return은 생략 가능

 

 

 

7.내부함수

=>함수 안에 함수를 만드는 것이 가능

 

8.closure

=>함수가 함수를 리턴하는 경우

=>함수 내의 데이터를 계속 사용하기 위해서

=>함수 내에서 만든 데이터는 함수의 수행이 종료되면 소멸됩니다.

함수가 리턴한 데이터도 함수의 수행이 종료되면 소멸

           //함수가 함수를 리턴헤서 내부의 데이터를 조작할 수 있도록 하는 것을 closure라고 합니다.

           var f = function(){

                       var inner = 0;

                       return function(){

                                  inner = inner +1;

                                  document.write("<br/>"+inner );

                       }

           }

           //Uncaught ReferenceError: inner is not defined

           //document.write(inner);

           var k = f(); //f를 호출한 결과가 k에 저장 -k도 함수가 됩니다.

 

 

9. 내장 함수

=>자바스크립트가 제공하는 함수

=>자바스크립트 안의 window객체가 제공하는 함수

=>자바스크립트에서는 window객체의 속성이나 함수는 window.없이 사용이 가능

1)alert

=>매개변수로 대입된 데이터를 메시지 박스를 이용해서 출력해주는 함수

=>별도의 대화상자를 출력하기 때문에 팝업창이 차단되면 대화상자를 출력하지 못합니다.

           //브라우저 마다 다르다.

           alert("메시지 대화상자");

 

2)confirm

=>메시지와 2개의 버튼을 출력하는 함수

=>확인과 취소 버튼을 만들어서 출력해주는데 확인을 누르면 true를 리턴하고 취소를 누르면 false를 리턴

           var result = confirm("정말 삭제하시겠습니까 ?");

           document.write("<br/>"+result );

 

3)prompt

=>한 줄 입력상자를 포함하는 대화상자

prompt(메시지, 기본값)의 형태로 사용하면 확인을  누르면 입력한 데이터를 리턴하고 취소를 누르면 null을 리턴

           //입력하지 않고 확인을 누르면 ""이 리턴됩니다.

           var result = prompt("이름을 입력하세요?");

           document.write("<br/>"+result );

 

4)eval ->이것으로 되여있으면 책이 오래됬다.

=>태그에 만들어진 name을 가지고 객체를 만들어주는 함수

document.폼이름.객체이름 형식으로 입력해서 사용

최근에는 document.getElementById(id) 의 형태로 객체로 만들어서 사용하는 것을 권장합니다.

 

5)인코딩 및 디코딩 함수

=>encoding: 프로그래밍언어에 입력된 문자열을 메모리에 저장되는 형태로 변경하는 것

=>decoding:메모리에 저장된 형태를 프로그래밍 언어나ㅏ 사람이 알아볼 수 있는 형태로 변경하는 것

=>url처럼 컴퓨터가 인식해야 하는 데이터는 영문과 숫자 이외의 글자가 있는 경우 인코딩해서 전달해야 한고 그 결과를 보고자 할 때는 디코딩해서 확인해야 합니다.

 

 

=>escape();일부 특수문자를 제외하고 전부 인코딩

=>encodingURI(); URL에 사용되는 특수문자를 제외하고 인코딩

=>encodingURIComponent:영문과 숫자를 제외하고는 모두 인코딩

=>대부분의 경우는 encodeURI를 사용합니다.

 

=>디코딩 해주는 함수는 unescape(), decodeURI(), decodeURIComponent()l

=>url을 인코딩 할 때는 파라미터 부분만 인코딩 해야 합니다.

프로토콜://도메인또는ip/파일경로?파라미터이름=&파라미터이름=..

           var url ="http://www.daum.net?name=test&addr=서울시양천구목동";

           document.write("<br/>"+escape(url) );

           //이 메소드는 파라미터만 인코딩합니다.

           //주소부분은 인코딩하지 않습니다.

           //URL은 파라미터 부분만 인코딩해야 합니다.

           document.write("<br/>"+encodeURI(url) ); //파라미터만 인코딩한다.

           document.write("<br/>"+encodeURIComponent(url) );

 

 

6)parseIntparseFloat

=>무자열을 정수나 실수로 변경해주는 함수

=>GUI프로그래밍에서는 문자열을 입력을 받을 수 있습니다.

입력받은 문자열을 숫자로 변경하는 중요한 작업 중의 하나입니다.

=>parseInt와 같은 메이커 함수를 이용해도 되고 직접 구현해보는 것도 중요합니다.

 

rose ->anagram

rose , oser, sero, eros =>비슷한 것 찾기

연결서열 찾는 것 해보기

 

**Object

=>객체라고 할 때는 프로그램에서 실체가 있는 모든 것

=>인스턴스는 클래스를 기반으로 만들어진 객체

인스턴스는 클래스만 있는 것에서 사용한다.

int a = 10;

String str = new String("HI");

 

a는 클래스로부터 만들어진것이 아니라서 객체라는 표현은 사용하지만 인스턴스라고 하지는 않습니다.

str은 객체라고 하기도 하고 인스턴스라고 하기도 합니다.

 

 

1.종류

1)사용자 정의 객체: 사용자가 만든 객체

2)BOM: (Browser Object Model): 브라우저가 처음부터 제공하는 객체

=>이미 만들어진 객체를 바로 사용

=>이름이 이미 결정되어 있음

 

 

3)DOM:(Document Object Meodel): 브라우저가 제공하는 생성자나 클래스를 이용해서 개발자가 만든 객체로 body태그 안에 있는 태그들

메모리 상에서는 트리 형태로 펼쳐져 있습니다.

=>body태그 안에 만들어 둔 태그를 찾아서 사용

=>이름은 개발자가 직접 생성

 

 

2.사용자 정의 객체

var 변수명 ={속성이름 : , 속성이름 : ...}

=>자바스크립트나 파이썬은 사용자 정의 객체가 Map 형식 -나중에 속성을 추가하거나 삭제하는 것이 가능

 

1)객체가 자신의 속성에 접근

객체["속성"]또는 객체, 속성으로 접근 가능

 

2)속성의 값으로 함수를 대입하는 것도 가능

 

           //속성이름은 문자열로 만들어져야 하기 때문에 ""를 생략해도 됩니다.

           //자바스크립트나 파이썬에서는 함수 안에서 자신의 속성을 호출할 때 this를 붙여야 합니다.

           var obj = {nanme:"test" ,age : 50 , disp:function(){document.write(name + ":" + age);} } ;

 

           //속성이름은 문자열로 만들어져야 하기 때문에 ""를 생략해도 됩니다.

           //자바스크립트나 파이썬에서는 함수 안에서 자신의 속성을 호출할 때 this를 붙여야 합니다.

           //python에서는 this라는 이름을 개발자가 정할수 있습니다.

           //this가 없어면  function안에서 찾는다.

           var obj = {name:"test" ,age : 50 , disp:function(){document.write(this.name + ":" + this.age);} } ;

           obj.disp();//함수 호출

           document.write("<br/>"+obj.name+" :" +obj["age"]);

 

3)for-in 을 이용하면 객체의 모든 속성을 순회할 수 있습니다.

 

4)속성이름 in객체를 이용하면 속서이 객체에 존재하면 true없으면 false

=>자바스크립트에서는 이 구문을 많이 사용하는데 BOM,DOM처럼 브라우저가 제공하는 객체들은 브라우저마다 소유한 속성이 달라서 어떤 속성이 있는지 확인해서 속성을 호출해야 하는 경우가 종종 있기 때문입니다.

=>IE와 다른 브라우저를 구분해서 동작을 수행하기 위해서 입니다.

           //name은 존재하는 속성이라서 true address는 없는 속성이라서 false

           document.write("<br/>" +( "name" in obj));

           document.write("<br/>" +( "address" in obj));

 

5)with

=>with(객체이름){}을 하게 되면 {}안에서는 객체이름.을 생략하고 속성 사용이 가능합니다.

이렇게 하게되면 속성이 window객체에 있는 것인지 객체 안에 속한 것인지 혼동이 올 수 있습니다.

 

 

6)속성 제거 및 구가

객체이름["속성이름"] = ;

속성이 존재하면 수정이지만 없으면 생성입니다.

 

delete(객체이름["속성이름"]) 을 이용하면 속성 제거

 

 

7).생성자 함수

=>자바스크립트는 클래스 개념이 없습니다

=>자바스크립트에서는 클래스는 없지만 생성자의 개념은 존재해서 동일한 모양의 여러 개의 객체를 만들고자 할 때 생성자를 이용합니다.

생성자 안에서 this.속성을 만들면 이 속성이 객체의 속성이 됩니다.

this.을 붙이지 않으면 지역변수가 됩니다.

this를 붙이는 가 아닌가에 따라서 생성자가 결정된다.

=>생성자 함수의 이름 시작은 대문자로 하는 것이 관례

 

           //생성자 함수 -this를 이용해서 name, age, disp.라는 속성을 생성

           var Person = function(name, age){

                       this.name = name;

                       this.age = age;

                       this.disp = function(){

                                  document.write(this.name +":" +this.age);

                       }

           }

           //자바스크립트는 클래스의 개념이 없어서 객체 지향 언어라는 표현을 사용하지 않고

           //객체 기반 언어라는 표현을 사용합니다.

           //최근에는 자바스크립트에 객체 지향의 개념을 도입한 TypeScrypt가 등장했습니다.

           //생성자를 이용한 객체 생성

           var person1 = new Person("이순신" , 80);

           person1.disp();

           person1.address ="서울시 양천구 목동"; //추가

           delete(person1.age);//지우기

           person1.disp();

           //map구조이기 떄문에 추가도 삭제도 가능하다.

 

 

3.일반 내장 객체

=>자바스크립트의 내장 객체는 http://www.w3schools.com/jsref/default.asp이나

http://devdocs.io/javascript/에서 확인 가능

dom은 우리가 만든것이 dom이다.

 

1)Object객체

=>자바스크립트의 최상위 객체

=>다른 모든 객체들이 가져야 하는 공통 속성을 소유

=>사용자 정의 객체도 Object객체의 하위 객체입니다

=>toString(): 객체를 문자열로 리턴해주는 함수

이 함수는 출력하는 함수에 객체를 매개변수로 대입하면 자동으로 호출

=>Object.prototype.속성이름 = 값을 추가하면 모든 자바스크립트 객체에 속성이 추가가 됩니다.

 

2)Number객체

=>숫자 자료형 객체

 

3)String  객체

=>문자열 객체

=>다른 언어가 가진 메소드들을 대부분 소유

=>length가 함수가 아니고 속성

 

i는 출발점

i  j

0  + 0,1,2,3

1  + 0,1,2,3

2  + 0,1,2,3

3  + 0,1,2,3

=>word.charAt((i+j)%word.length) 원래 자리로 돌아간다.

 

           var word ="rose";

          

           //각각의 글자를 하나씩 출력

           for(var i = 0; i <word.length; i++){

                       for(var j = 0; j <word.length; j++){

                                  document.write(word.charAt((i+j)%word.length));

                       }

                       document.write("<br/>")

           }

      

   

 

4)Math

=>JavaMath 객체와 동일

=>객체를 만들지 않고 Math.속성 또는 메소드()로 사용

=>random(): 0.0 ~ 1.0 사이의 랜덤한 실수 리턴

=>PI, E라는 속성을 이용해서 파이값과 자연로그 값을 사용

           var ar = ["C","Java" ,"Python" ,"JavaScript"];

           //배열 내의 데이터를 랜덤하게 추출

           //Math.random()이면 0.0 ~ 1.0 사이의 랜덤한 실수

           //정수로 변환 : parseInt또는 Math.round()반올림

           //배열의 데이터 개수는 length속성

          

           //random숫자에 일정한 값을 곱해서 0 ~ 3 범위를 넘어서게 만듭니다.

           //소수 반올림을 이용해서 정수로 변환

           //변환한 정수를 배열의 데이터 개수로 나눈 나머ㄴ지로 범위를 축소

           //ramdom 난수 표 있다. 현재시간으로 시드에서 나온다.

           //c언어는 맨 처음에 부조건 46이 나온다.

           var x = Math.round((Math.random() * 100) % ar.length);

           document.write(ar[x]+"<br/>");

 

 

5)Date

=>날짜를 위한 객체

=>날짜 및 시간은 기준시를 기준으로 지나온 시간을 정수로 저장

=>필요에 따라 이 정수를 년월일 시분초로 변환

=>필요에 따라 이 정수를 년월일 시분초로 변환

=>자바스크립트는 시간의 단위가ㅏ 1/1000(밀리초)

=>객체 생성

new Date(): 현재 날짜 및 시간

new Date(정수): 197011일 자정부터 지나온 시간 -epoch time

new Date(,,,,,,밀리초) ; 뒤에서부터 생략 가능

 

 

=>메소드

get단위(),set단위()

 

=>getTime(): epoch time을 리턴

           //자바나 자바스크립트는 월이 0부터 시작합니다.

           var d = new Date(1986, 4,5);

           document.write(d+"<br/>"); //Thu Jun 05 1986 00:00:00 GMT+0900 (대한민국 표준시)

           //오늘 날짜에서 d까지 몇칠이 지났는지 확인

           var today = new Date();

          

           var ch = today.getTime() - d.getTime();

           alert(Math.round(ch/(1000*60*60*24)));

           //자바는 21억 까지 밖에 안되서 확인 해야 한다.

 

1000분의 1초 단위로 나온다.

 

 

6) Array

=>배열 객체

=>배열은 Double Linked List

=>앞이나 뒤에서 삽입가능하고 중간에 삽입이나 삭제도 가능

=>reverse(),pop()- 마지막 요소를 꺼내서 리턴, push()-저장, shift()- 첫번째 데이터를 제거하고 리턴, unshift()-첫번째에 데이터를 저장

=>remove(데이터) - 데이터 삭제

=>indexOf(데이터) - 데이터를 찾아서 위치를 리턴하는데 없으면 음수 리턴

=>sort()-데이터를 오름차순 정렬

숫자 데이터는 문자열로 치환해서 정렬합니다.

매개변수가 2개이고 정수를 리턴하는 함수를 대입하면 메소드를 이용해서 비교한 후 정렬

 

python은 결과가 나오는것만

sort(str.len)

 

           var doubleLinkedList = [];

           doubleLinkedList.push(29);

           doubleLinkedList.push(31);

           doubleLinkedList.push(129);

           doubleLinkedList.push(41);

           document.write(doubleLinkedList+"<br/>");

           //"29","31","129","41"

           document.write(doubleLinkedList.sort()+"<br/>");//129,29,31,41

           //자바스크립트는 단위를 다르게 안여면 결과를 알수가 없다.

           //2개의 데이터 뻴셈 결과로 정렬 - 함수형 프로그래밍

           //함수의 매개변수로 함수를 대입

           document.write(doubleLinkedList.sort(function(left,right){return left-right})+"<br/>");//29,31,41,129

           document.write(doubleLinkedList.sort(function(left,right){return right-left})+"<br/>");//129,41,31,29

소켓동신 tcp,udp 성능은 좋은데 구현이 어렵다.

url 통신 성능은 떨어지지만 구현은 쉽다.

클라이언트가 중요한 원인인 요청만 했다. 서버(처리 ->결과 ->화면)

 

     <------ 화면

 1024 *768

반응형 웹 : 화면 크기와 상관없이 크기가 같게 나오자.

모바일 때문에 클라이언트가 중요해졌다.

 

최근에는 화면을 주지 말고 데이터만 줘라

서버에서 결과물을 만들어오면 정렬 하면 저장소 까지 가야 한다. 화면에서 할수 있으면 서버 까지 갈 필요없다.

데이터를 무료로 주면 OpenAPI

데이터를 빠르게 해주는 것이 중요하다 그래서 화면에서 해주는 것이 좋다.

통신할 때는 텍스트 밖에 안한다.

 

컬럼단위가 아니라 행단위로 정렬하는 것

           //생성자 생성

           var Data = function(name, score, age){

                       this.name = name;

                       this.score = score;

                       this.age = age;

                       this.disp = function(){

                                  document.write(this.name +":" + this.score+ ":" + this.age+"<br/>")

                       }

           }

          

           var list = [new Data("크루이프",98,54),new Data("베르캄프",99,51),new Data("반브스텐",87,53)];

           //정렬을 위한 함수를 생성

           var nameCompare = function(left, right){

                       if(left.name > right.name){

                                  return 1;

                       }else if(left.name < right.name){

                                  return -1;         

                       }else{

                                  return 0;

                       }

           }

           var scoreCompare = function(left, right){

                       return left.score - right.score;

           }

           var ageCompare = function(left, right){

                       return left.age - right.age;

           }

          

           var menu = prompt("정렬할 옵션을 선택하세요(1.이름, 2점수 , 3.나이)");

           if(menu == "1"){

                       list.sort(nameCompare);

           }else if(menu == "2"){

                       list.sort(scoreCompare);

           }else if(menu == "3"){

                       list.sort(ageCompare);

           }else{

                       alert("잘못된 메뉴 입력한 대로 출력");

           }

          

           for(var temp in list){

                       list[temp].disp();

           }

 

 

=>배열에 추가된 함수: forEach(), filter(),map()=>이방법을 이용하면 조금 더 효율적이다.

forEach()는 매개변수가 1개이고 리턴이 없는 함수를 대입해서 배열의 모든 요소가 함수를 수행하도록 합니다.

 

filter는 매개변수가 1개이고 boolean을 리턴하는 함수를 대입해서 배열의 모든 요수 중에서 true를 리턴하는 데이터를 가지고 새로운 배열을 만들어서 리턴합니다.

 

map은 매개변수가 1개이고 데이터를 리턴하는 함수를 대입해서 배열의 모든 요솔르 가지고 함수를 수행해서 리턴된 값들을 가지고 새로운 배열을 만들어서 리턴합니다.

 

           var x = [30,23,76,72];

           //배열의 모든 요소를 함수의 매개변수로 대입해서 함수를 실행

           x.forEach(function(arg){

                       alert(arg);

           });

          

           //fiter는 골라내는 것 return 을 받아야 한다.

           //배열을 모든 요소를 함수의 매개변수로 대입해서 함수의 리턴값이 true인 데이터만 추출해서

           //배열로 생성

           var o = x.filter(function(arg){return arg%2 == 0});

           alert(o)

          

           //배열의 모든 요소를 함수의 매개변수로 대입해서 함수의 리턴값을 가지고 새로운 배열을 리턴

           o = x.map(function(arg){return arg+10 ;});

           alert(o);

 

7)JSON객체

=>JSON :자바스크립트 객체 표현 방법을 이용해서 데이터를 표현

[]: 배열

{속성:,속성:...}

=>직접 작성하는 경우에는 속성이름데 ""를 해주어야 합니다.

실제로는 직접 작성하는 경우는 거의 없음

데이터를 만드는 것은 데이터를 가져와서 라이브러리를 이용해서 변환

 

=>JSON.parse(문자열): JSON형식의 문자열을 자바스크립트의 자료형으로 변환

=>JSON.stringfy(자바스크립트객체): json형식의 문자열로 변환

parse가 중요합니다.

최근에 서버가 클라이언트가 넘겨주는 데이터 포맷중에서 가장 많이 사용되는 것이 JSON입니다.

스마트 폰은 거의 대부분 JSON입니다.

google apple이 데이터를 JSON으로 넘겨줍니다.(twitter)

Back-end 언어를 할 때는 html을 만들어주는 것도 중요하지만 JSON이나 XML형식의 데이터를 리턴하는 것도 중요합니다.

 

4 .BOM(Browser Object Model)

=>브라우저가 처음부터 제공하는 객체

1)window객체

=>웹 브라우저에 해당하는 객체

=>location 속성 : 현재 url확인

=>opener 속성: 팝업 창의 경우 자신을 출력할 window

=>self 속성 : 자신

opnerself속성은 예전에 팝업 창을 이용할 때 많이 사용하던 속성

=>open(): 팝업창을 만들어준느 메소드

첫번째 매개변수로 출력할 url을 주는 것이다.

두번째 매개변수로 통신을 할 때 사용할 이름

세번째 매개변수로 윈도우 모양을 객체로 대입

네번째 매개변수는 history변경 여부 - 팝업창의 주소를 기억할 지여부를 설정

 

=>타이머 관련 메소드

setTimeout(함수 , 시간) : 시간이 지난 후에 함수를 1번만 수행

setInterval(함수 ,시간)  애니메이션 만들 수 있다  : 시간 단위로 함수를 계속 수행

 

setTimeout이나 setIterval로 타이머를 만들고 결과를 변수에 대입하면 타이머를 중지할 수 있습니다.

 

clearTimeout(타이머);

clearInterval(타이머);

 

광고처럼 이미지를 순서대로 보여주다가 마우스를 갖다 대면 중지 한다던가 하는 것들이 타이머와 ajax 조합입니다.

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>BOM</title>

<script>

           var img = document.getElementById("img");

           //Uncaught TypeError: Cannot set property 'src' of null

           img.src ="./images/pt2.png";//에러가 난다.

 

</script>

</head>

<body>

           <img src="./images/pt1.jpg" width="100" height = "100" id = "img">

</body>

</html>

 

 

                       //스크립트에서는 이벤트를 이용하지 않는 경우에는 만들어지지 않은 것은 사용 못함

                       //스타일시트는 코드를 전부 읽고 화면에 랜터링할 때 수행되기 때문에 시트를 먼저 만들어도 실행이 나중에 되기 떄문에

                       //코드 작성 위치는 상관이 없습니다.

                       var img = document.getElementById("img");

                       var imgname = ["pt1.jpg","pt2.jpeg","pt3.jpg"];

                      

                       var text = ["C","Java","Python","JavaScript"];

                       var disp = document.getElementById("disp");

                      

                       //타이머 생성

                       //1초마다 function을 실행하는 타이머

                       var i = 0;

                       var timer = setInterval(function(){

                                  i = i+ 1;

                                  img.src = "./images/"+imgname[i % imgname.length];

                                  disp.innerHTML = text[i % text.length];

                       }, 1000);

 

2) screen

=>화면과 관련된 정보를 소유한 객체

=>widthheight속성

 

3)location

=>url관련된 객체

=>href 속성: 현재 url, 다른 url을 대입합면 그 url로 이동

=>reload():새로고침

 

4)navigator 객체

=>userAgent: 접속한 운영체제와 브라우저 정보를 문자열로 리턴

이 속성을 이용해서 어떤 기기에서 접속했는지 알 수 있고 어떤 브라우저인지 알아냅니다.

모바일 운영체제에서 접속하면 모바일 페이지로 이동시키는 것도 이 속성을이용

 

//모바일 운영체제 이름 배열을 생성

                       var userAgent = navigator.userAgent;

                       alert(userAgent);

 

 

                       //모바일 운영체제 이름 배열을 생성

                       //apple제품은 iphone ipad가 구분됨

                       //andriod 제품은 스마트 폰과 테블릿이 구분이 안됨

                       //모바일 페이지를 만들 때 andriod 를 고려하는 경우에는 pc버전이라는 버튼을 추가합니다.

                       var mobile = ["iphone" ,"ipad","andriod"];

                       //userAgenr mobile에 있는 텍스트가 있는 지 확인

                       var result = false;

                       for(var idx in mobile){

                                  if(userAgent.toLowerCase().indexOf(mobile[idx]) >= 0){

                                              result = true;

                                              break;

                                  }

                       }

                       if(result == true){

                                  //locatoin.href = "모바일페이지 url";

                                  alert("스마트 폰에서 접속");

                       }else{

                                  alert("pc에서 접속")

                       }

 

http://ip주소:9000/web/bom.html

확대 축소가 안되고 따로 만들어지는 경우가 있다

피씨 버전이 있다 .외냐하면 안드로우드 테블릿 때문이다.

 

5)history

=>이동한 url에 대한 정보를 가진 객체

=>back():뒤로

=>forward():앞으로

=>go(인덱스) : 인덱스 만큼 이동

 

form

 

 

 

history.back

메시지 출력할 수 가 없다.

 

 

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-6  (0) 2020.10.15
frontEnd-5  (0) 2020.10.15
frontEnd-3  (0) 2020.10.12
frontEnd-2  (0) 2020.10.12
frontEnd-1  (0) 2020.10.10
반응형

**css

1.border-raduis

=>경계선에 원형 곡선을 적용할 수 있도록 해주는 속성

 

2.box-shadow

=>그림자를 생성

=>그림자 방향(insert, outset) x-offset y-offset blur정도 색상

 

3.실습

=>디렉토리 구조

WebContent

-resources

         -js

         -css

         -images

 

-views

 

=>views디렉토리에 boxshadow.html을 생성하고 작성

검사로 소스가 틀렸는지 확인한다.

404: 잘못된 url

=>경로 설정 잘못

 

메뉴 만들고 효과를 주는 것

 

box-shadow: inset 0px 0px 20px 15px rgba(18,52,88,0.3);

           box-shadow:0px 0px 20px 15px rgba(18,52,88,0.3);

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>박스의 경계선과 그림자 효과</title>

<link rel ="stylesheet" href="./../resources/css.css">

</head>

<body>

           <h1 class ="korea"><p>대한민국</p></h1>

</body>

</html>

 

=>css 디렉토리에 css.css 파일을 만들고 작성

.korea {

           /*속성: ;*/

           color:#000000 ;

           width:200px ;

           line-height: 30px;

           padding:30px ; /*경계선과 콘텐츠와의 여백*/

/*         margin다른 객체와의 여백*/

           border: 1px solid rgb(18, 52, 88) ;

           /*여러 속성의 값을 한 번에 적용할 때 공백으로 구분*/

           /* , 는 동일한 속성의 값을 여러 개 적용할 때 구분*/

           background:#eeeeee;

           /*여러 개의 값을 지정할 수 있는 속성의 경우에 뒤에서 부터 값 생략 가능합니다.*/

           /*cssjavascript는 옵션에 전부 기본값이 설정되어 있습니다.*/

           border-radius: 15px;

           box-shadow: inset 0px 0px 20px 15px rgba(18,52,88,0.3);

           /*0px 0px 20px 15px 출발점이고 어디 까지 줄지 */

}

 

.korea p { vertical-align: middle;} /*line-height 만 주면 중간에 잘 간다.*/

 

 

 

4.float

=>콘텐츠를 배치하는 방법

=>이 속성을 이용하면 콘텐츠를 화면위에 올려놓은 것 처럼 배치

=>블록 요소 옆에 다른 콘텐츠를 배치할 때 사용

=>left, right, none으로 설정

 

 

5.float해제

clear: both; 를 사용

 

6실습

1).html에 추가

           <div class="menu">Unix</div>

           <div class="menu">Max OS X</div>

           <div class="menu">Linux</div>

           <div class="menu">Windows</div>

          

           <!-- 다음 줄로 내려고자 하면 기존 float를 해제 해야 합니다. -->

         <div class="title"><h2>운영체제</h2></div>

2)css에 추가

/*menu클래스를 가진 객체들을 왼똑에서부터 배치하고 오른쪽에 다른 콘텐츠를 배치할 수 있도록 설정*/

.menu{

           float:left;

           margin: 10px;

}

 

/*title 클래스를 가진 객체는 이전에 적용된 float를 해제하고 원래대로 배치*/

.title{

           clear: both;

}

 

7.display 속성

=>콘텐츠가 화면에 보여질 때 어떤 형태로 보여질 것인지 설정

=>block, inline,inline-block 등이 있음

=>block(블록 요소로 변환) ,inline(인라인 요소로 변환), inline-block(블록으로 만드는데 내부에서 줄 바꿈을 하지 못하도록 변환) 등이 있음

=>테이블 요소로도 변환이 가능

 

8.overflow

=>크기에 비해 많은 양의 콘텐츠를 가진 경우 출력방법을 설정

=>visible(크기를 눌려서 출력), hidden(숨김) , scroll(스크를 바를 생성)

=>화면에 안에 별도의 영역을 구성해서 콘텐츠를 출력하고 내부에 스크롤을 배치하는 경우나 많은 데이터를 출력할 때 테이블을 사용하는 경우에 해딩을 고정시키는 용도로도 사용 가능

전체 화면 에 또 화면 있고 안에도 scroll bar가 있고 밖에도  scroll bar가 있다.

탭으로 만든 이유는 모바일때문이다. 인터넷 끊어질 가능성이 있기 떄문이다.

hidden으로 했다가 후에 visible로 하는 것이다.

데이터가 발생한곳에서 해야 한다.스마트폰의 센스 데이터 받아서 위치정보 등 이슈가 된다.

 

9.엑셀의 틀 고정 처럼 스크롤을 해도 항목의 이름은 화면에 계속 출력되도록 하기

1)html에 작성

           <table>

                       <tr>

                                  <th>이름</th>

                                  <th>언어</th>

                       </tr>

           </table>

          

           <div class="contents">

                       <table>

                                  <tr>

                                              <td>데니스리치히</td>

                                              <td>C언어</td>

                                  </tr>

                                  <tr>

                                              <td>제임스 고슬링</td>

                                              <td>Java</td>

                                  </tr>

                                  <tr>

                                              <td>귀도 반 로섬</td>

                                              <td>Python</td>

                                  </tr>

                                  <tr>

                                              <td>브랜던 아이크</td>

                                              <td>Javascript</td>

                                  </tr><tr>

                                              <td>비야네 사우스스트룹</td>

                                              <td>C++</td>

                                  </tr>

                                  <tr>

                                              <td>아르네스 하임스베르</td>

                                              <td>C#</td>

                                  </tr>

                       </table>

         </div>

2)css에 작성

table{

           border: 1px solid black;

           width: 400px;

}

 

th, td{

           width: 200px;

}

 

.contents{

           width:420px;

           height:100px;

           overflow: auto;

}

 

10.position

=>콘텐츠의 배치 방법

1)static : 콘텐츠를 순서대로 배치

2)relative: 이전 요소와의 관계를 가지고 배치, lefttop속성을 이용해서 원하는 만큼 떨어뜨려서 배치 가능

3)absolute: left, top,right, bottom 속성을 이용해서 배치

4)fixed :스크롤을 해도 특정위치에 고정되는 방식

 

 

11.visibility

=>visible, hidden속성을 설정해서 보여지고 보여지지 않도록 해주는 설정

 

12.z-index

=>겹쳐서 출력되는 경우 출력되는 순서 설정을 위한 속성

 

 

13.transform

=>변환 -크기 , 위치 ,회전 ,비틀기 등의 변환을 수행

=>표준으로 적용ㄷ되지 않아서 verndor-prefix를 이용해야 합니다.

=>크롤과 사파리는 webkit, firefoxmoz, IEms

-webkit-transform: scale(2.0);

         -webkit-transform:skew(10deg,10deg);

-webkit-transform: scale(2.0);

         -webkit-transform: rotate(45deg);

                                           여기를 조작하는 것을 transform이라고 한다.

이것을 추상으로 한다.                                     x          y          z

 

연산의 기준점:origin(회전의 기준점 응용프로그램은 )

scale(2.0)->출력만 2배로 확대해서 한다.

 

원본

                    연산해서 출력한다.

 

게임시

(10,0)  <----------------(0,0)

(10,0)애서 죽었을 경우 (0,0)으로 가야 한다. 0,0에서 있고 10,0에다 출력한다.

10,0만 버리면 원본이 된다.

확대 축소도 같다. 원본은 그대로 이고 출력만 변한다

 

 

 

 

복사본이 필요 없으면 버리면 된다. 데이터베이스 원리 메모리 부담이 줄어들 수 있다.

 

기본형과 참조형

python scalar vector

 

system에서는 변경 가능 , 변경 불가능 이 큰 문제이다.

변경이 가능하다면 여분의 공간이 필요하다.

변경 불가능이라면 여분의 공간이 필요없다.

List[10,30]

List.add(1,20);

컴퓨터에서는 중간에 끼여널려면 큰 공간을 할당받아서 이것 저것 작업해야 한다.

작업해야 할 것이 많다.

implacabler기능이 있다.

R에서는 <- 하고 = 이것이 필요하다.

원복속성을 바꾸면 부담이 되서 transform으로 한다.

그래서 수학을 알아야 한다. 행렬 계산 등

행렬연산

 

 

출력은 비동기이다. 순서대로 하는 것이 아니라 모아서 처리한다.

애니메이션 : 비동기 그래서 콜백 함수가 항상 있다. 화면 출력은 시간이 오래 걸린다.

         화면 출력: 오랜시간이 걸리는 작업

         오랜시간이 걸리는 것은 입출력 문제

         FIFO=>먼저 입력한것 먼저 출력한다.

         오랜 시간 뒤에 짧은 시간 처리하는 것이 있으면 짧은 시간 이 걸리는 분은 starvation이 걸릴 수 있다.

콘솔 출력

1-10 출력시 10번만 쓰여진다. 이것은 모아서 처리하기 때문이다.

 

동기 : 순서데로

비동기 : 순서와 상관없이

 

transform은 운본 크기가 변한 것이 아니라 출력만 변한 것이 기 떄문이다.

 

14.animation

1)transition animnation

transition-property: 애니메이션을 적용할 속성을 설정(all 을 기재하면 모든 속성);

transition-duration:애니메이션 적용시간

transition-timing-function: 애니메이션 적용방법(linear(균등하게) ,ease-in(가속 점점 빨라진다.) , ease-out( 점점늦어진다. 천천히) , ease-in-out(가운데 빠르는 것) )

transition-timing-delay: 대기시간

 

2)Keyframe Animation

=>중간 중간에 변화를 추가할 수 있는 애니메이션 기법

=>애니메이션 생성

@-webkit-keyframes 애니메이션이름{

           from{시작값 설정}

           to{종료값 설정}

}

from대신에 백분율로 애니메이션 변화시점 지정 가능

 

=>애니메이션 적용

-webkit-animation-name: 애니메이션이름

타이밍 함수( timing-function)나 시간(duration), 반복횟수(iteration-count: infinite이면 무한대) ,play-state, direction(alternate-왕복, normal-한쪽으로만 적용)을 설정

 

jquery 메뉴 plugin

jquery table plugin

jquery 무료 차트 plugin

jqplot http://www.jqplot.com/

 

**반응형 웹 디자인

=>디바이스나 브라우저의 크기에 상관없이 동일한 콘텐츠를 사용할 수 있도록 디자인

스마트 폰 애플리케이션을 제작할 때도 이 개념은 중요

=>웹에서는 cssmedia query와 상대적인 크기 개념으로 구현을 합니다.

모바일에서 확대 축소 안 되는 것user-scalable : user-scalable

가장 일반적인 설정

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximumscale=1.0, user-scalable=no"/>

 

**javacript

1.개요

=>script는 웹 페이지의 처리능력을 향상시키기 위해서 등장

동적으로 DOM객체의 변환을 하는 것이 목적

=>초창기에는 APPLE script, vb scripte등이 존재하지만 지금은 javascript를 표준으로 간주

javajavascript근본적으로는 관계가 없습니다.

=>최근에는 타입의 안정성(정적인 자료형 도입 ,클래스의 개념)을 추가한 typescript도 있습니다.

=>기본적으로는 브라우저 안에서만 동작하는 클라이언트 사이드 언어

=>웹 프로그래밍을 할 때는 자바스크립트가 필수 요소라서 최근에는 라이브러리나 프레임워크를 이용해서 자바스크립트 문법으로 서버 사이드 개발이 가능한 node.js 도 등장했고 브라우저 엔진 위에서 동작하는 응용 프로그램을 만드는 용도로도 사용이 되면 스마트 폰 앱 애플리케이션 제작에도 활용됩니다.

=>자바스크립트 문법만으로 웹 서버와 클라이언트를 같이 제작하기도 합니다.

M(Mongo DB), E(Express.js) A(Angular.js) N(Node.js)이라고 합니다.

A대신에 reactvue를 사용하기도 합니다.

mnc++

=>최근에는 텐서플로우와 같은 ai분야의 라이브러리도 등장

 

2.사용방법

1) 외부 파일에 만들어두고 사용

<script scr="자바스크립트 파일 경로"> </script>

 

 

2)html 파일 내부에서 만들어서 사용

<script>

내용

</script>

 

3)태그 안에 만들어서 사용

<태그 이벤트 ="script:내용"></태그>

 

 

3.작성시 주의 사항

=>대소문자 구별

=>;은 한줄에서 2개 이상의 명령을 작성할 때 명령을 구분하기 위해서 사용

=>명령어마다 ;을 할 필용는 없지만 한 줄에 2개의 명령어를 사용할 때는 필수

=>문자열을 만들 때 작은 따옴표나 큰 따옴표를 동일한 역할을 수행

작은 따옴표나 큰 따옴표 안에 다른 따옴표를 할 때는 반드시 나중에 만들어진것을 먼저 닫아야 합니다.

=>자바스크립트나 파이썬은 줄 단위로 변역하면 실행되기 떄문에 뒤부분에 에러가 있더라도 에러가 없는 부분까지는 수행이 되고 예외가 발생할 수 도 있습니다.

 

print()

print()

 

print() print()=>이렇게 쓸 경우 에러가 난다. 그래서 ;세미코론을 추가한다.

; 여기까지는 하나의 명령어이니깐 한번에 실행해주세요

 

4.제어문자

=>\ 다음에 하나의 영문자를 추가해서 만든 특별한 문자 상수

\n: 줄 바꿈

\t:

\',\",\\ : ',",\를 의미

 

5.주석

//내용: 한줄 주석

/* 내용 */ : 여러 줄 주석

 

 

6.Literal

=>사용자가 직접 작성한 데이터

숫자 리터럴: 10진수 형태로 작성

문자열 리터럴: '문자열' 또는 "문자열"

논리형 리터럴: true,false

참조형 리터럴: null(만들어졌지만 가리키는 데이터가 없음 . 변수는 만들어졌는데 값이 null인것이고 ) ,undefined(만들어지지 않는 데이터)

 

var a ;//a undefined

var b= null;//bnull이다.

 

int a ; undefined사용못한다.undefined는 이름 자체가 없다.

String str = null; str.은 할 수없다. 데이터가 없다. 이름이 있는데 저장하고 있는게 없다.

 

7. 변수 선언

var 변수명 = ;

=>처음에 값을 대입하지 않으면 변수는 생성되지 않습니다.

=>초기값을 대입하지 않은 경우에는 나중에 값을 대입해야만 생성되는 것으로 간주

=>var를 붙이지 않고 만드는 것이 가능한데 이 경우는 실제로는 변수가 만들어지는 것으로 보지 않습니다.

var를 붙이지 않으면 전역변수의 개념처럼 동작합니다.

변수명 = 값 이런식으로 하기도 합니다.

 

8. 데이터 출력

1) 브라우저 창에 출력

document.write(메시지 또는 변수 나 상수 또는 연산식 그리고 함수 수행 )

document.writeln(메시지 또는 변수 나 상수 또는 연산식 그리고 함수 수행 )

=>writeln은 줄 바꿈이 아니고 한번에 수행해 달라는 요청

ln이 없으면 모아서 출력하는 것이고 ln이 있으면 모으지 말고 바로 출력하는 것입니다.

메시지가 길 때 한번에 작성하는 것이 어려우면 write 를 이용해서 나누어서 작성한 후 한번에 출력 해달라고 합니다.

 

2)대화상자에 출력

alert(출력할 내용)

=>최근 브라우저에서는 별도의 윈도우 출력하는 것을 권장하지 않아서(팝업 금지) 옵션을 변경하지 않으면 출력되지 않을 수 있습니다.

 

 

3)브라우저 디버거에 출력

console.log(출력할 내용)

=>화면에서는 보이지 않고 디버거 창을 열어서 콘솔에서 확인

크롬의 경우는 마우스 오른쪽 클릭해서 [검사]를 실행해야 확인이 가능

 

9.스크립트 작성 위치

=>스크립트는 html문서 내의 어느곳에나 작성 가능

=>순서대로 실행되므로 자신이 사용하고자 하는 객체는 호출하기 전에 만들어져 있어야 합니다.

=>예전에는 head에 만들었는데 최근에는 body안에 만들기도 합니다.

 

10.html파일을 만들고 작성

<script>

           //변수 만들기

           var msg ="자바스크립트";

          

           //브라우저에 출력

           document.write(msg);

           //대화상자에 출력

           alert("대화상자에 출력");

           //콘솔에 출력

           console.log("콘솔에 출력");

</script>

 

           //자바스크립트에서는 변수를 만들고 값을 대입하지 않으면 없는 값으로 간주

           //이런 경우는 undefined

           var x;

           document.write(x);

 

 

<script>

           //변수 만들기

           var msg ="자바스크립트";

          

           //브라우저에 출력

           document.write(msg +"<br/>");

           //대화상자에 출력

           alert("대화상자에 출력");

           //콘솔에 출력

           console.log("콘솔에 출력");

          

          

           //자바스크립트에서는 변수를 만들고 값을 대입하지 않으면 없는 값으로 간주

           //이런 경우는 undefined

           var x;

           document.write(x);

</script>

 

 

11.javascript디버깅

=>자바스크립트는 대부분의 IDE가 디버깅 기능을 제공하지 않습니다.

1)자바스크립트는 에러가 없는 부분까지 실행하는 경우가 많기 때문에 중간중간 출력하는 코드를 삽입해서 어디까지 에러없이 실행되는지 확인해 볼 수 있습니다.

 

2)브라우저의 검사 기능을 이용

크롬이나 IE는 검사 기능을 이용하면 문서의 구조, 그리고 CSS적용 , 자바스크립트 에러를 어느 정도 까지는 확인할 수 있도록 해줍니다.

단지 에러라고 출력합니다. 예외 종류를 구체적으로 알려주지는 않습니다.

 

document.wris is not a function

위 문장만 가지고는 document가 없는 것인지 wris가 없는 것인지 알 수 없습니다.

 

 

12. 배열 선언

=>자바스크립트의 배열은 List입니다.

var 배열명 = [데이터 나열];

var 배열명 = new Array(데이터 나열);

 

=>데이터 사용

배열명[정수 인덱스]

 

=>없는 인덱스를 사용하면 가져올 때는 undefined 대입할 때는 추가가 됩니다.

파이썬이나 자바스크립트는 객체가 클래스로부터 만들어지지 않고 Map의 인스턴스로 보는 것이 이해하기 편리합니다.

 

 

 

 

13.자료형 변환

1)숫자로 된 문자열에 * 정수를 하게 되면 문자열을 숫자로 변환해서 *을 수행

2)자료형(데이터) 를 이용하면 데이터를 자료형으로 변환

Number, Boolean , String

정확하게는 자료형이 아니라 생성자로 봐야 한다.

3)다른 자료형 객체를 문자열로 변환할 때는 toString()메소드의 결과를 이용해도 됩니다.

 

14)연산자

1)최우선 연산자

=>[인덱스] :배열에서 인덱스번째 데이터를 가리키기 위한  연산자

=>.:객체가 자신에게 속한 속성이나 메소드를 호출 할 때 사용하는 연산자

 

 

2)증감연산자

=>정수 변수에만 사용가능한 연산자

=>++,--

=>++는 변수의 값을 1증가시키고 --는 변수의 값을 1감소시키는 연산자

=>명령문에 사용되는 경우 ++를 변수 앞에 사용하면 변수의 값을 증가시키고 명령문에 변수의 값을 사용하고 변수 뒤에 사용하면 변수의 값을 명령문에 사용하고 변수의 값을 감소시킵니다.

 

3)산술 연산자

=>% : 나머지 구해주는 연산자

=>*,/ :곱과 나누기 연산자

=>+,- : 더하기와 뺴기 연산자

 

 

4)결합연산자

=>문자열과 다른 종류의 데이터또는 문자열과의 결합에 사용: +

 

5)비트 논리 연산자

=>정수를 2진수로 변환해서 비트 단위로 연산 한 후 다시 10정수로 리턴해주는 연산자

& : 둘다 1인 경우만 1그 이외의 경우는 0

| : 둘다 0인 경우만 0 그 이외의 경우는 1

^: 두개가 같으면 0 다르면 1

파이썬의 numpy, pandasR에서는 그룹 데이터 Collection이 이 연산자를 이용해서 조건 필터링을 합니다.

 

~: 1의 보수

<< : 왼쪽의 데이터를 오른쪽의 숫자만큼 왼쪽으로 shift - 1번할 때마다 *2

>> : 왼쪽의 데이러를 오른쪽의 숫자만큼 오른쪽으로 shift -1번 할때마다 /2

 

컴퓨터의 숫자 표현

정수: 2진수로 표현

실수 : 부동소수점 방식으로 표현

음수 : 2의 보수 방법으로 표현한다.

 

 

-20

1의 보수 구하면

 

-를 하는 것은 뒤으로 부터 1을 찾은 다음 그다음 부터 뒤집기 하면 된다.

 

정수 -> 2진수 문자열

2진수 문자열 -> 정수

정수 문자열 -> 정수

"12476" -> 12476

Integer.pareInt()안하고 정수문자열을 정수로 바꾸는 것

 

 

실수:

 

 

python에서는 &&전체를 연산하고 & 부분으로 연산한다.

1111

1111

비교할 경우

&&는 결과가 하나 나오고

& 는 여러개 나온다.

 

~1의 보수이다. 숫자상에는 의미가 없는데

1의 보수는 0->1 1->0으로 바꾼다.

숫자로는 의미가 별로 없지만 이미지에서는 의미를 가진다. 반대되는 색을 만들 경우

이미지 에서는 0->1 1->0을 반대되는 색을 의미한다.

 

-1:

12의 보수가 전부 1이기 때문에

0000 0001

1111 1111 =>-1

-1은 모든 비트가 1로 전부 채워졌다.

 

-1은 모든 비트가 1로 채워진 수

signed

unsigned

 

00000000~ 11111111

-1이 될수 있고 가장 큰 수도 될수 있다.

indexOf() -> 값이 있으면 위치를 주고 없으면 -1을 준다. -1을 끝까지 가봤는데 없다.

infinite가 무한데라고 했는데 -1주면 무한반복처럼 동작한다.

컴퓨터에는 무한반복이 없다.

 

a++->있는 언어 있고 없는 언어도 있다.

a= a+1=>알고리즘은 이것을 사용한다.

and0하고 &하면 0을 준다.

&0->포맷 혹은 delete이다.

or 데이터를 복사할 떄는 삽입할 떄 사용한다.

 

0하고 or하면 데이터가 그대로 옯겨진다. copy,

xor 비교할 때사용한다..

 

6) 비교 연산자

>,>=,<,<= : 크기 비교

 

==: 값의 일치 여부를 확인

=== : 값과 자료형 까지 일치하는 지 확인

"123" == 123 : true로 나온다. 원래는 비교가 안되야 하는데 ->숫자 123을 문자열로 변환해서 비교해버립니다

"123" === 123 : false

 

"123" == 123 : "123" == "123"

 

!= : 값의 불일치 여부를 확인

 

 

7) 조건 존리 연산자

&& :and

||:or

=>데이터 전체를 하나로 보고 연산을 해서 결과가 boolean 1개로 리턴

 

 

8) 여러개의 데이터로 구성된 데이터 끼지 andor연산을 할 때는 &

python에서는 && 중요하고

데이터 분석에서는 & 이 중요하다.

 

9) 삼항 연산자

(조건식) ? 명령1: 명령2;

=>조건식이 true이면 명령1 false이면 명령2

=>조건식은 boolean데이터가 나오는 식이어도 되지만 숫자의 경우는 0이면 false그 이외의 수는 양true로 간주하고 존재하는 데이터면 true존재하지 않는 데이터 (null, undefined)false로 간주합니다.

 

var a = 10;

a?100:200->a10이라는 값을 가지고 있어서 true로 간주

a= 0 ->a false로 간주

 

var ar;

arfalse

ar = [100,200];

artrue

 

10)대입 연산자

= : 오른쪽 데이터를 왼쪽의 변수에 대입

 

+= : 왼쪽의 변수에 저장된 값과 오른쪽의 데이터를 +연산을 해서 결과를 왼쪽의 변수에 대입

 

var a= 10;

a+= 7;

a = a+7과 같습니다.

 

 

11)new

=>생성자를 호출할 때 사용하는 연산자로 생성자를 이용해서 객체를 생성하고 생성한 객체의 참조를 리턴하는 연산자

 

12)this

=>생성자나 인스턴스 메소드 안에서 객체 자신을 가리키는 포인터

 

13) typeof

=>데이터의 자료형을 문자열로 리턴해주는 연산자

 

 

14)delete

=>데이터를 삭제하는 연산자

 

15)instance of

=>객체가 특정 클래스로 부터 만들어 졌는지 확인해서 boolean으로 리턴해주는 연산자

 

16)in

=>속성이 객체에 존재하는지 확인해서 boolean으로 리턴하는 연산자

 

결과 : intercept=>절편

결과 : slope=>기울기

책은 자기가 중요하는 것만 출력해준다.먼저 타입을 확인해야 한다

dir 사용할 수 있는 것이 다 나온다.

type으로 확인하고 -> dir ->help

어떻게 사용하는지 주고 가면서 해야 한다.

어떤 자료형인지 확인 해야 한다.

 

 

15.제어문

1)제어문의 종류

=>분기문 : 조건이나 값에 따라 다른 문장을 수행해도록 해준는 명령어

if: 조건에 의한 분기

switch:값에 대한 분기

 

=>반복문(Loop- iteration)

while :조건이 false가 될때 까지 수행

do ~while : 일단 한번은 하고 조건이 false가 될 때 까지 반복

for :  시작점부터 종료하는 부분 까지 하나의 괄호안에 모두 작성

for ~ each : for ~ in - 어떤 객체나 데이터의 모임을 순서대로 방문 (순회)

자바스크립트는 데이터의 모임 뿐 아니라 객체도 for-in사용 가능

 

1)if

=>조건 분기를 위한 명령어

 

if(조건1){

           조건1의 내용이 true일 때 수행할 내용;

}else if(조건2){

           조건1의 내용이 false이고 조건2true일 때 수행할 내용;

} else if(조건3){

           앞의 모든 조건이 false이고 조건3true일 때 수행할 내용;

}...

else{

           앞의 모든 조건이 false일 때 수행할 내용

}

 

=>if는 필수 이고 else if는 생략 가능하고 여러 개 사용도 가능

else는 생략 가능하고 1번만 사용 가능

 

3)switch

=>값에 의한 분기

switch(변수 또는 정수나 문자열을 리턴하는 연산식){

           case 1:

                       ()안의 결과가 값1일 때 수행할 내용;

                       break;'

           case 2:

                       ()안의 결과가 값2일 때 수행할 내용;

                       break;'

           ....

           default:

                       일치하는 값이 없을 때 수행할 내용

                       break;

}

=>break가 없으면 break를 만날 때 까지 계속 수행합니다.

 

 

 

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-6  (0) 2020.10.15
frontEnd-5  (0) 2020.10.15
frontEnd-4  (0) 2020.10.12
frontEnd-2  (0) 2020.10.12
frontEnd-1  (0) 2020.10.10
반응형

 

port 충돌

1.eclipse <-> tomcat

tomcat을 단독으로 시키면 2개켤 경우

eclipse

2.방화벽

 

https: 암호화 해서 하는 것

암호화 하는 방법이 있어야 한다.

인증서로 만든다.

인증서 없으면 http

 

a=>2000번지

2000번지만 하기 어려워서

a로 한다. a는 변수 구분하기 쉽게 하기 위해서

ip대신에 도메인 등록해서 문자를 대신해준다.

데이터는 브라우즈에서 저장을 잘 안한다.

데이터가 디비를 사용했다. orcle, mogodb

 

python으로 하는 것 장고나 플라스커 이 있어야 web application server을 할 수 있다.

R html을 바꿀수 있는 것을 못한다. 그래서 web 프로그램을 못한다. 바로 치환할 수 없다.

web server하고 web application server있어야 웹프로그램을 할 수 있다.

 

자바는 was뭐 사용해봤나.?

apache tomcat, jeus

 

java web programming

1. java 설치(java se 1.8)

2. ide 설치 (eclipse java ee)

3. was(Tomcat)was 역할을 수행할 프레임워크

4.저장소(db)

 

SQLite: Embedded -> IoT

스마트폰에도 서버데이터를 임시로 저장할 때 사용

 

웹프로그램이 많이 사용하는 서버 언어는

JAVA-> php->  node.js python

php는 급여가 적어서 많이 사용한다.

스타트업이 node.jspython

asp .net c#  게임 엔진 유니티

 

미국은 언어를 제한하지 않는다.

지바와 c#똑같다.

 

unix상용화 linux반대

java->완전한 객체지향

c#

 

 

c 객체지향  -> c++

               -> objecive-c ->java

               -> c#

그래서 c# java 지원이 가능하다.

윈도형은 c++, c#을 많이 사용한다.

 

포트번호 충돌 확인 해야 하는 경우

1.     이상한 포트

2.     포트가 켜져있는지

1000번이상의 포트를 사용하는 것이 좋다.

다른것은 예약 되어 있을 가능성이 높다.

 

**HTML

 

1.imagemap

=>image의 특정좌표를 클릭하면 하이퍼링크를 통해서 이동하도록 해주는 것

1)imageusermap이라는 속성을 이용해서 이름을 1개 생성

 

2)map생성

<map name="1번에서 사용할 이름">

           <area shape ="rect,circle,poly" coords ="좌표를 입력" href ="이동할 url"/>

</map>

 

=>rectcoords 왼쪽상단의 X,Y좌표 그리고 오른쪽 하단의 X,Y좌료를 설정

=>circle은 원의 중점의 X,Y좌표 그리고 반지름을 설정

=>poly2개씩 쌍으로 무제한 설정 가능

단계구분도 만드는 것이 좋다.

2.table 관련 태그

=>table 태그의 내용은 pythonpandasDataFrame으로 바로 변환가능

=>여러 개의 데이터를 행과 열로 구분해서 출력할 때 이용

 

<table>:테이블

<tr>: 하나의 행

<th>: 하나의 셀 - 제목 셀 - 굵게 쓰지고 가운데 맞추어진다.

<td>: 하나의 셀 - 일반 셀 - 그냥 쓰여진다.

 

=> table을 그냥 만들면 경계선이 보이지 않습니다.

경계선을 출력하고자 하면 table 태그에서 border속성에 경계선의 두개를 설정 -css에서도 가능

=>table align속성은 테이블 자체의 맞춤이고 thtd에서의 align은 내용의 맞춤

=>table이나 th,td등에는 width이용해서 너비 설정 가능

=>table이나 tr에는 height속성 이용해서 높이 설정 가능

 

 

=>tdth에서 rowspan="합쳐질 셀의 개수" 이나 colspan="합쳐질 셀의 개수" 를 이용해서 셀 병합이 가능

 

=>thead, tfoot, tbody

theadtr을 감싸면 제목 행이 되서 맨 위에 출력

tfoot으로 tr 을 감싸면 바닥글 행이 되서 맨 아래에 출력

tbodytr을 감싸면 내용행이 되서 thead뒤에 출력

이 태그들을 이용하면 문서의 구조를 쉽게 이해할 수 있으면 음성 브라우저를 사용하는 경우 셀을 읽을 때  thead에 설정된 셀을 같이 읽어 줍니다.

 

3.fieldset & legend

=>fieldset은 묶어서 경계선을 만들고자 하는 경우 사용

=>legendfieldset안에서 경계선의 제목을 만들 때 사용

 

 

4.form태그

=>사용자의 입력을 받아서 서버에게 전송하기 위한 태그

=>form안에서 name을 가진 속성들은 서버에게 전송됩니다.

 

 

1)form

<form action="전송받을 서버의 url" method="get또는 post를 설정하는데 전송방식"

enctype="multipart/form-data">

</form>

=>actionform안의 데이터를 전송받아서 처리를 URL을 작성하는데 생략하면 현재 URL이 자동으로 설정됩니다.

=>METHOD는 파라미터 (NAME을 가진 입력 도구 ) 파라미터를 전송하는 방식을 설정하는데  GETURL에 입력한 내용을 표시해서 전속하고 POSTHEAD에 숨겨서 전송합니다.

검색 창에서 입력한 검색어는 GET방식을 이용해서 전송하고 로그인 창에서 입력한 아이디와 비밀번호는 POST방식으로 전송

 

2)label

=>텍스트를 출력할 떄 사용하는 태그

<label>출력할 내용</label>

=>for 속성에 다른 입력도구의 id를 설정하면 모바일 웹에서 레이블을 선택해도 입력도구를 선택한 것과 동일한 효과를 만들어 줍니다.

 

3)input

=>입력도구

=>type속성에 설정할 수 있는 값: text, button, submit, reset, password, radio, checkbox, file, image, hidden

html5에서는 모바일을 위한 속성

 

text :한줄 입력 두고

password : 입력한 내용이 아니라 특수문자로 보여지는 한 줄 입력도구

radio : 여러개 중에서 하나를 선택하도록 할 때 사용하는 것으로  name이 같으면 같은 그룹

checkbox : 여러개 중에서 여러 개를 선택하도록 할때 사용하는 것으로 name이 같아야 하나로 묶어서 서버에게 전송

file : 파일을 선택하기 위한 입력도구

 

button : 눌러서 어떤 동작을 위한 입력도구  button보다는 그림(image)을 많이 사용

 

submit: 폼의 데이터를 서버로 전송해주는 버튼

reset: 폼의 데이터를 전부 클리어 해주는 버튼

image: image 를 배치할 수 있는 버튼

hidden: 화면에 출력되지는 않지만 서버에게 데이터를 전송하고자 할 때 사용

 

게시물 수정

제목

내용

데이터를 수정했다.  수정을 하고 수정을 하고 난다음 첫번째 페이지로 이동한 경우가 있다. 수정은 방금전에 클릭한 페이지가 좋다. 그래서 input hidden을 만들어서 pageno는 몇번째 페이지라고 보관한다.

hidden 은 데이터를 보관하는 것으로 사용한다.

 

4)textarea

=>여러 줄의 데이터를 입력받고자 할 때 사용

=>rowscols 속성을 이용해서 초기 크기를 설정

 

 

5)select

=>여러개의 항목 중 하나를 선택할 때 사용

<select name ="">

           <option value ="서버에게 넘어가는 값" >텍스트</option>

           <option value ="서버에게 넘어가는 값" >텍스트</option>

</select>

여기에서는 value가 필수이다. value가 넘어 간다.

 

6)form에 입력도구 들을 배치할 때 입력하는 순서대로 배치하는 것이 좋고 필수 입력란을 먼저 배치하고 선택적 입력 란을 뒤에 배치하는 것이 좋습니다.

여러 개의 입력을 받는 경우 페이지를 나누는 것도 고려

 

 

5.divspan

=>영역을 생성하는 태그

=>div는 블록태그이고 span은 인라인 태그

 

6.iframe

=>다른 문서를 출력하기 위한 태그

=>프로젝트 내의 문서만 출력 - 외부 링크도 출력이 가능하지만 보안의 문제 때문에 제한적입니다.

사이트에서 iframe에 출력할 수 없도록 설정할 수 있습니다.

구글은 iframe으로 출력이 안되는 경우가 있다.

=>width height속성을 이용해서 크기를 설정

=>name속성을 이용해서 이름을 설정 : a 태그에서 targetiframename으로 설정하면 하이퍼링크의 내용을 iframe에 출력합니다

=>src 속성을 이용해서 출력할 문서를 지정

크롤링 할 경우 switchToframe해야 가져올 수 있다.

driver.switchTo().frame(driver.findElement(By.id("down")));

frame은 독립적인 객체이다.

보여지는데 데이터 못 들고 올 경우 두가지 경우가 있다.

1.     frame -> 이동해서 데이터 가져와야 한다.

2.     ajax -> sleep해서 몇초 기다려야 한다.

 

**css

=>웹페이지에 디자인이라는 시각적 가치를 부여하기 위한 언어

=>표준은 2.13.0

3.0에서는 모든 시각적 효과는 태그의 속성을 이용하지 않고 css로 만드는 것을 권장

 

1.사용방법

1) External Style Sheet

=>외부에 스타일시트 파일을 만들고 링크를 걸어서 사용하는 방식 - 권장

=>Linked StyleImport Style로 나눔

 

2)Internal Style Sheet

=>html파일안에 <style></style>을 만들어서 태그 안에 내용을  작성하는 방식

 

 

3)Inline style Sheet

=>태그 안에 style이라는 속성을 이용해서 작성하는 방식 - 비추천

 

4)외부에 만드는 것을 권장하는 이유는 프로그램의 소스는 역할 별로 분리하는 것이 유지보수에 유리하기 때문입니다.

 

2. 외부 스타일시트 연결

1)<link rel ="stylesheet" href ="css파일 경로">

 

2)< style type="text/css">

@import url("파일 경로")

</style>

 

 

3)상대경로

./: 현재 디렉토리

../: 상위 디렉토리

 

WebContent/design/stylesheet.html : ./../resources/css/extern.css

 

WebContent/resources/css/extern.css

 

3.css작성 방법

선택자{ 속성 : ;

           속성: ; .....

}

=> 속성과 값은 쌍으로 만들어져야 하고 콜론으로 구분

=>스타일시트 내의 예약어들에 따옴표 붙이면 안됩니다.

 

4.selector(선택자)

=>html문서 내의 DOM객체를 선택하기 위한 문법

1)*

=>모든 객체를 선택

 

2)tag

=>태그 선택자

 

3) .class이름

=>클래스 선택자

 

4) #id이름

=>id선택자

 

5)class는 동일한 디자인을 적용하기 위해서 설정하고 id1개를 구분하기 위해서 설정

id와 유사한 것으로 xpath가 있는데 xpath는 개발자가 설정하는 것이 아니고 브라우저가 특정 DOM객체를 찾기 위해서 사용하는 개념으로 유일무이합니다.

 

6)속성 선택자

선택자[속성]:선택자 중에서 속성이 존재하는 것만 선택

선택자[속성=""]: 선택자 중에서 속성의 값이 일치하는 것만 선택

 

7)가상 클래스

=>선택자 뒤에 :을 추가하고 사용

link : 링크에 적용

visited : 방문한 링크에 적용

 

hover:마우스가 올라오면 - 음영이 생긴다.

activeL마우스로 누르면 - 눌렀을 때 색각이 변한다.

 

focus: 포커스가 오면

checked:체크하면

enabled:활성화되면

disabled:비활성화 되면

 

 

8)하위 선택자

선택자 다른선택자

=>선택자 안에 포함된 다른 선택자를 모두 선택

p a : p태그 안에 있는 모든 a태그

 

선택자 > 다른선택자

=>선택자 바로 아래 레벨에 있는 다른 선택자

p > a : p태그 바로 아래 레벨에 존재하는 a태그

 

<p><a href=""></a></p>

<p><span><a href=""></a></span><p>

 

p a : a태그 2개 모두 선택

p>a : 첫번때 a태그는 선택되지만 두번째 a테그는 선택안됨

 

=>부모 선택자와 자식 선택자가 같이 있는 경우 부모 선택자를 지워도 선택이 된다.

범위를 줄이면 부모 선택자를 삭제하면 더 많이 선택되기는 하지만 선택이 안되지는 않습니다.

 

 

 

9)다중 선택자

,를 하고 선택자를 입력하면 나열된 모든 선택자를 선택

=>a태그와 div태그를 같이 선택하고자 하면

a,div{속성:;}

 

5. 우선 순위

1)하나의 DOM에 동일한 속성의 값을 선택자로 여러번 지정하면 마지막에 적용된 값만 남습니다.

2)선택자에도 우선순위가 있다.

inline>id선택자>class선택자(가상 클래스) >tag선택

 

 

6.단위

=>css에서는 단위 생략을 못함

1)절대 단위: 어떤 환경에서든 동일한 크기

=>인쇄할 때 이용

 

2) 상대단위: 환경에 따라 서 크기가 다르게보임

=>모니터로 출력하때 이용

=>px(해성도 기준), ex(x의 높이), em(front-size 기준), %

 

3)기본 크기는 12pt, 16px정도가 기본

 

4)픽셀을 em단위로 변환

www.pxtoem.com에서 확인 가능

 

7.타이포그라피(단락의 텍스트 대한 설정)

1)폰트 설정]

fron-family: 글꼴

글꼴을 하나가 여러 개 지정하는 경우가 있는 이것은 첫번째 글꼴이 없을 때 두번째 글꼴을 적용하기 위해서 입니다.

 

2)폰트 크기 설정

font -size: 숫자와 단위의 조합

 

 

3)줄 간격

line-height:

 

 

4)글자 두께

 font -weight

=>900이 제일 두껍고 100이 제일 얇음

 

5)글꼴 스타일

font-style인데 italin만 지정 가능

 

6)font -variant

=>영문 소문자를 작은 대문자로 출력하기 위해서 사용하는 속성으로  small-caps를 설정하면 작은 대문자로 출력됩니다.

 

7)font

=>앞의 6개 속성을 순서대로 한꺼번에 설정할 때 사용

 

8) direction

=>텍스트의 쓰기 방향을 설정하는 것으로 ltr, rtl 을 설정할 수 있습니다.

 

9)text-indent

=>첫줄 들여쓰기 설정

 

10)text-align

=>단락에서의 좌우 맞춤

=>left, right, center로 설정

 

11)vertical-align

=>인라인 요소끼리의 상하맞춤

=>sub, super, top,bottom, middle, baseline 등이 있음

 

12)text-decoration

=>텍스트에 밑줄이나 취소선 표시

=>none, underline, overline, line- through

=>a태그의 밑줄을 없애고자 하는 경우에 none으로 설정

 

 

13)text-overflow

=>divspan같은 box안에 긴 문자열을 입력한 경우 영역을 넘어서는 문자열을 어떻게 표시할것인가를 설정

=>잘라버리는 clip이 잇고 ...으로 보여주는 ellipsis가 있습니다.

 

14) text-transform

=>영문 대소문자 변환

=>uppercase,lowecase,capitalize

 

15)letter-spacing

=>글자 간격

 

16)text-shadow

=>그림자 효가 -css3에서 도입

=>상하거리 좌우거리 색상으로 설정하고 ,를 이용해서 여러 개 설정 가능

 

8.목록

1)목록의 스타일 설정: 글머리 기호 설정

list-style-type:스타일

none, disc, circle, square, decimal, dicimal-leading-zero, upper-alpha, lower-alpha, upper-roman,lower-roman, upper-latin, lower-latin, lower-greek, armenian, hiragana, katakana

 

 

2)글머리 기호에 그림 설정

list-style-image:url("이미지 파일 경로")

크기 조절이 안되서 처음부터 작은 것 만들어와야 한다.

 

3)들여쓰기 효과

=>글머리기호가 앞으로 튀어나오게 하는 효과

list-style-position: inside 또는 outside

 

9.글자 색상

color: 색상값;

=>일바적인 색상은 이름으로 가능:red, blue

=>16진수 6자리 가능: #000000 ~ #ffffff

빨강 2자리 녹색 2자리 파랑 2자리

16진수 3자리라도 가능

#012 : # 001122

예전의 그래픽 카드는 많은 양의 색상을 표시할 수 없어서 r,g,b값을 중복해서 적용

=>rgb(정수, 정수 ,정수)

=>rgb(백분율, 백분율 ,백분율)

=>hsl(색조, 채도 ,명도)

 

 

10.배경

1)색상

background-color: 색상값;

 

2) 배경 이미지

background-image:url("이미지 파일 경로");

 

3)배경 이미지 반복 여부

=>배경 이미지가 작을 때 설정

background-repeat: no-repeat |repeat | repeat-x| repeat-y

 

 

4)배경 이미지 위치

background-position:[left, right, ] [top, bottom, ];

 

 

5)배경 이미지 스크롤 여부

background-attachment:scroll|fixed

 

6)background 를 이용해서 한꺼번에 설정 가능

background: background-color background-image background-repeat background-position background-attachment;

 

7)css javascript에서 여러 개의 값을 넘겨야 하는 경우 뒤에서부터 생략 가능

 

8)색상에 그라데이션이 가능

=>색상을 만들 때 linear- gradientradial-gradient 를 이용해서 생성

=>http://www.colorzilla.com/gradient-editor

 

9)vendor-prefix

=>css3에는 아직 표준으로 채택되지 않았는데 브라우저 별로 제공하는 기능들이 있습니다.

이러한 기능은 사용을 할 때 브라우저 이름을 명시해야 합니다.

=>브라우저 이름이 없으면 구형 브라우저로 판단

chrome, safari: -webkit (둘이 엔진이 같다.)

chrome에서는 safari에 다되는데 safari에서 되는 것은 chrome에서 한 두개 안될 수 도 있다.

firefox: -moz

explorer: -ms

opera: -o

 

=>모든 브라우저에 적용을 할려면 각 vendor-prefix를 이용해서 전부 작성해야 합니다.

 

 

11.box model

=> 사각 영역으로 div span으로 반든 영역

1)요소

width, height, border(경계선), margin(다른 콘텐츠와의 여백 - border와 다른 콘텐츠와의 여백), padding( 내부에서 콘텐츠와의 여백 - bordercontents와의 여백)

=>일반적인 브라우저의 box영역 가로 크기 :width +margin+padding + border

=>IEBOX영역 가로 크기: width크기 안에 padding이 포함됩니다.

일반적인 크기 설정을 하게 되면 ie에서 콘텐츠가 작게 보입니다.

 

웹 접근성 강화 : 장애 여부에 상관없이 동일한 콘텐츠를 사용할 수 있도록 해야 한다.

 

반응형 웹 디자인: 브라우저 화면 크기에 상관없이 동일한 콘텐츠를 사용할 수 있도록 해야 한다.

 

크로스 브라우징 : 브라우저 종류에 상관없이 동일한 콘텐츠를 사용할 수 있도록 해야 한다.

 

크롬과  ie에 출력하는 화면이 다른 것은 box model이 다르기 때문이다.

 

2)margin의 겹칩

=>2개의 contentsmargin이 둘 다 설정된 경우 다 적용되는 것이 아니고 큰 거 하나만 적용됩니다.

이 두개의 사이가 70px가 아니고 40px이다.

 

3)maring 설정

=> margin: 하나의 숫자 ->상하좌우 모두 동일하게 적용

=>margin: .4개의 숫자 -> 상하 좌우 모두 다르게 적용

=>margin-left, margin-right, margin-bottom, margin-top을 이용해서 각각 설정도 가능

 

4)padding설정

=>margin과 동일

 

 

5)border: 경계선

border-width: 두께

border-top - width , border - left-width, border-right- width, border-bottom-width를 이용해서 각각 적용이 가능

 

=> border-color:색상으로 적용방법은 width와 동일

 

=>border-style : 선모양

none, dotted, dashed, solid, double, groove, ridge, inset, outset

 

=>border: width style color를 한꺼번에 설정

 

6)애플리케이션에서의 버튼 구현

=>이미지를 이용해서 이미지 교체

=>이미지를 이동

=>테두리의 색상을 변경

 

7)css3에서는 border-radius기능이 추가

=>테두리를 동그렇게 만들 수 있습니다.

 

 

**html5css3는 가장 큰 목적이 외부 플러그 인이나 애플리케이션 없이 웹 애플리케이션을 구현하는 것이 목적

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-6  (0) 2020.10.15
frontEnd-5  (0) 2020.10.15
frontEnd-4  (0) 2020.10.12
frontEnd-3  (0) 2020.10.12
frontEnd-1  (0) 2020.10.10
반응형

jQuery: Cross Browing(어디에서도 다 할 수 있는 것)

BootStrap : 반응법 웹

Bue, reac, angular: mvc 구현 만드는 회사가 뷰 , facebook , google

Node.js : 서버

 

 

예전에는 media player하는데 요즘에는 필요 없다. html5로 한다.

공인 자격증 일본과 한국만 있다. 국가에서 하는 것

미국은 주립대학

vicadic ->it 취업비자가 나온다.

이것 없으면 정보처리기사 등 따야 한다.

프레임워크는 유행이 있고 해서 하면 안된다.

 

iphone swift

 

web server was -> 배포 서버 서버용 언어 ->html

 

**Web Programming준비

1.코딩을 할 수 있는 IDE 또는 Editor -> Eclipse

2. 출력되는 결과를 확인하기 위한 Web Borwser

=> THML5를 확인하기 위해서는 IE보다는 Chrome

Chrome보다는 FirefoxOpera(html5)브라우저가 조금 더 잘 지원  

 

3. 2번까지만 있으면 html을 만들어서 결과 확인은 가능

 

4.만들어진 결과를 배포한고자 하면 Web Server가 있어야 합니다.

 

5.Back End언어로 만들어진 내용을 브라우저를 이용해서 확인하고자 하는 경우에는 WAS(Web Application Server - Web Container)가 있어야 합니다.

WAS는 웹 서버의 요청을 받아서 Back End 언어로 처리한 결과를 HTML로 변환해주는 역할을 수행해주는 프로그램

 

JavaWAS 중에서 가장 유명한 프로그램이 apache tomcat 이고 국내 공공기관 SI에서는 티맥스에서 만든 제우스를 많이 사용합니다.

기업들은 사용하는 was가 다양합니다.

하나의 선택이지 필수는 아니다.

 

 

 

**WAS - Tomcat설치

=>windows의 경우는 installer 버전을 다운로드 받아서 설치 가능

=>나머지 운영체제는 압축된 버전을 다운로드 받아서 압축을 해제한 후 실행할 때 연결해서 사용(startup.sh 또는 startup.bat)

https://tomcat.apache.org/download-80.cgi

 

2.설치

=>windows에서 oracle이 설치된 상태에서 tomcat을 설치할 때는 되도록 포트번호를 변경해주는 것이 좋습니다.

=>oracle8080번 포트를 사용하는데 tomcat의 기본포트가 8080번 입니다.

포트충돌이 발생해서 tomcat이 제대로 구동되지 않을 수 있습니다.

 

 

windwos 실행파일 bat, com , exe(메모리 사용량이 많다.)

.sh=-> unix , mac, linux에서 사용

su -  : 관리자 번호로 하는 명령어 비밀번호가 설정되어 있어야 한다.

 

=>압축된 파일의 경우는 압축을 해제하는 것으로 설치가 끝난 것입니다.

 

**Eclipse 환경 설정

=>대다수의 ide는 워크스페이스 단위로 환경설정을 합니다.

워크스페이스를 변경하면 이전 환경설정은 사라지게 됩니다.

=>web programming 할 때는 encoding방식을 utf-8 로 설정하고 출력하는 브라우저를 설정을 합니다.

 

1,출력 브라우저 변경

[windows] - [Preferences] -[Applicatioin] - [web browser]  에서 설정

 

2. [Apperance] - [workspace]에서 text file encodingutf-8  로 변경

 

3.[web]에서 html, css, jspencodingutf-8 로 변환

브라우저에서 한글이 깨지면 이 설정을 확인

 

 

4.Mac에서는 encoding설정을 할 필요 없음

 

XHTML.pdf

ux는 애플이다. 사용하기 편리하게 배우지 않고 할 수 있게끔 메뉴얼은 책으로 디여있다.

삼성은 책으로 준다.

 

접근성  장애인

반응형 웹디자인 : 화면 크기에 따라 디자인이 바뀐다.

웹표준

htmlmarkup이다.

웹표준 : xml  순수한 데이터 형식이다.

microsoftedge 있는지 없는지 하는 것은 다르다.

예전에 오류 뜨는 것은 script지원하지 않아서 지금은 지원한다.

웹 시각화 svg

시작<tag>~종료</tag>까지의모든명령어집합을요소(element)’라고합니다.

시작태그는태그의의미와필요에따라개별적인옵션을가질수있는데이러한 옵션을속성(attribute)’이라고합니다. 속성은태그마다다를수있으며, 여러개의 속성을하나의태그에지정할때는공백으로구분하여시작태그에지정할수있 습니다.

각속성이가지는값을의미하며, 속성에값을할당할때는대입연산자인=과함 께지정합니다.

 

 

**XHTML

1.태그에 사용할 수 있는 공통 속성

1)ID:태그를 구분하기 위한 식별자 - 중복될 수 없습니다.

2)CLASS: 여러 개의 태그를 그룹화하기 위한 속성 - 중복 가능

 

3)NAME: 서버에게 전송할 때 서버에서 구분하기 위한 이름 - 중복 가능

 

2.태그 작성 시 권장 사항

1)태그 이름은 소문자로 작성

2)태그 다음에 요소를 사용하는 경우 종료 태그를 생략 불가능

<태그 > 요소</태그>

3)속성이름은 소문자로 작성

4)닫는 택,가 없는 태그를 만들 때는 <태그/>로 작성

5)속성을 사용하는 경우 값을 생략하지 않도록 작성

6)잘못된 중첩을 하지 않도록 작성

7) 속성에 값을 설정할 때 ' " 로 감싸서 작성

=>HTML은 비구조적이라서 위의 규칙을 적용하지 않아도 출력은 됩니다.

<a  href ="http://www.daum.net" > 다음 </a>

<a  href ="http://www.daum.net" > 다음도 가능

<a  href ="http://www.daum.net" > 다음 </b></a>

<a  href ="http://www.daum.net" > 다음 </a></b> 가능

 

3.주석\

<!-- 주석 내용 -->

 

4.문서 구조

<!DOCTYPE 내용>:DTD - 문서에 대한 설명

<html>:html문서 시작

<head></head>:문서에 대한 정보 설정

<body></body>:문서에서 출력되는 부분

</html>

 

5.태그 분류

1)블록 요서 :태그가 배치되면 좌우에 다른 태그를 배치할 수 없는 요소

h1~ h6, p , div, ul , al,dl

 

2)인라인 요소 :태그 주위에 다른 인라인 요소가 배치 될수 있는 요소

img, span, a

 

 

 

**xhtml요소

1.meta

=>문서에 대한 정보를 작성하는 태그로 head부분에 작성

<meta charset ="인코딩 바익" >:문서의 인코딩 설정 ,잘못되면 한글이 깨져서 표현됩니다.

<meta name ="keywords" content ="키워드 , 키워드 ... ">:검색 엔진 키워드로 검색했을 때 검색되도록 설정

<meta http-equiv ="refresh" content ="시간 url = 이동할 경로">: 시간이 지나면 경로로 리다이렉트 ->서버 구현할 때 많이 사용한다.

트래픽이 많이 사용하면 싸이트가 죽는다. 하지만 네이버는 죽지 않는다.

naver 2개 있다.

<meta http-equiv ="pragma" content ="no-cache" > 이 페이지는 캐싱하지 않음

=>캐시는 이전에 다운로드 받았던 내용을 브라우저에 저장하고 있다가 다음에 요청하면 서버에서 가져오지 않고 브라우저 내부에 있는 것을 출력

 

=>viewport는 반응형 웹 디자인에서 설명

 

2.title

=>문서의 제목을 만들어주는 태그로 head에 작성

=>브라우저의 탭에 보여주고 bookmark에 추가할 때 기본 텍스트가 됩니다.

 

3.eclipse에서 웹 프로젝트를 만들고 실행

1)dynamic web project 실행

=>프로젝트 이름을 작성할 때 소문자와 숫자를 조합: 웹 주소로 설정할 수 있기 때문에

 

2)프로젝트의 webContent 디렉토리에 html,css, javascritp은 만들어야 합니다.

다른 곳에 만들면 실행되지 않습니다.

 

3) WebContent 디렉톨에 html파일 추가

디렉토리를 선택하고 마우스 오른쪽을 클릭해서 html추가

 

4)html파일을 선택하고 마우스 오른쪽 클릭 후 [Run as] -[Run on server] 를 클릭

=>첫번째 실행이면 was를선택 : apach - tomcat 9.0

=>실행했는데 포트에러가 발생하면 project explorer에서 servers탭의 server.xml 파일을 열어서  아래 부분을 수정 - 기본 값이 -ㅂ이면 다른 양수 포트번호로 수정

 

-port의 값이 8080이면 다른 번호로 수정

<Connector connectionTimeout="20000" port="9000" protocol="HTTP/1.1" redirectPort="8443"/>

 

http://localhost:9000/web/web/first.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>나의 사이트</title>

</head>

<body>

안녕하세요 반갑습니다.

</body>

</html>

 

 

4.link,  stype

=>스타일시트 적용을 위한 태그

<link rel =""stylesheet" href="외부 스타일시트 파일 경로">:외부에 스타일시트 파일을 작성한 경우 적용

<style>스타일시트 내용</style>:내부에 스타일시트 내용을 작성하는 경우

 

 

5.script

<script src="외부 스크립트 파일 경로"></script>

<script>스크립트 내용</script>

 

6.제목 태그

<h1>내용</h1>

<h1 - 6 >: 숫자가 작을 수록 글자 크기가 큼

=>h1은 큰 제목으로 페이지 내에서 한 번만 사용하는 것을 권장

=>블록 태그

 

7.문단(단락) 태그

<p>내용</p>

=>블록 태그

 

8. 줄 바꿈 태그

<br/>

 

9.강조태그

<b> 텍스트 </b> : 굵게

<i>텍스트 </i>: 이택릭 - 기울림

 

10. 특수문자

&nbsp;->공백

 

&lt;->작다 <

&gt;-> 크다 >

=>xml이나 html에서  부등호는 크기를 나타내는 기호라서 잘못사용하면 태그로 해석을 합니다.

부등호를 화면에 출력하고 하면 특수문자 형식으로 사용해야 합니다.

 

&amp; ->&

&quot; ->"

 

 

11. 입력한 그대로 출력

<pre>내용</pre>

 

 

12.문단 중앙 정렬

<h1 align ='center'> 내용</h1>

=>블록 태그(h1, p태그)에서는 align속성을 이용해서 가운데 , 왼쪽 ,오른쪽 배치가 가능

 

<center>내용</center>

 

13.하이퍼링크 태그

=>a태그

<a href ="링크">내용 또는 <img src ="이미지 파일 경로" /></a>

=>인라인 태그: 다른 태그가 옆에 배치될 수 있음

=>href 속성: 클릭했을 때 이동할 경로

웹에서 검색이나 클릭을 이용해서 내부 데이터 수집을 하고자 하는 경우에 이 태그의 href 속성의 값을 찾아와야 합니다.

 

=>target 속성 :이동할 때 브라우저 실행 방법

_blank :새로운 탭으로 열기

_self: 현재 탭에 열기

다른 영역의  name이나 id:다른 영역에 열기

 

14. 목록 태그

1)순서없는 목록 태그 :ul

<ul type="disc, circle, square">

           <li>목록</li>

           <li>목록</li>

</ul>

 

2)순서있는 목록 태그 : ol

<ol type ="1,A, a, 로마자대문자 ,로마자 소문자">

<li>목록</li>

           <li>목록</li>

</ol>

=>stylesheet를 이용하면 글머리 기호로 일번어 나 그림이 가능

 

 

3)정의형 목록

<dl>

           <dt>정의할 단어 </dt>

           <dd>설명</dd>

</dl>

 

15.이미지 출력 태그

<img/>:인라인 태그

=>src속성 : 이미지 파일의 경로

=>width, height: 너비와 높이로 숫자로 픽셀의 크기를 입력해도 되고 백분율로 화면 크기에 대한 비율로 설정해도 됩니다.

=>border: 경계선으로 두께를 설정

=>hspace,vspaceL 좌우와 상하 여백 설정

=>align: 다른 태그의 배치 설정으로 leftright를 이용하면 좌우에 여러 중의 콘텐츠 배치 가능

top, bottom, middle은 콘텐츠의 상하 배치

=>이미지 파일은 별도의 디렉토리에 모아놓고 상대경로의 개변으로 출력

이미지가 많다면 별도의 파일서버를 만들고 절대경로를 이용하기도 합니다.

 

=>이미지나 사운드 파일의 경우는 html을 다운로드 받아서 출력하고 그 다음 다시 이미지나 사운드를 다운로드 받아서 출력을 합니다.

변하지 않은 이미지나 사운드의 경우는 캐시 기능을 적절히 이용하면 출력을 빠르게 할 수 있습니다.

인터넷 속도 늦을 경우 네이브 싸이트 들어갈 경우 글자만 보일 수 있다. 이미지가 캐싱이 되였으면 전의 것으로 보여서 빨리 보일수 있는데 이미지가 계속 변하기 때문에 캐시이 없다.,

 

double buffer을 이용한다.

naver.png .img두번 출력한다.

cpumain momery -> disk ->naver.png 그다음 다시 돌아간다

다시 가져올 경우 자원의 낭비 기 때문에

밑으로 내려갈 수록 늦어진다

a.png b.jpg 2개 있어야 한다.

bpy -> buffer문제 때문에

 

 

a.png , b.png- > buffer하나에

 

 

sprite image ->하나에 이미지 4 ->한번만 가져와서 쪼개서 사용한다.

이미지 4개로  -> 4번 가져온다.

중간에 끊어질때 게임은 가능하다. 인터넷 연결하는 것은 점수

 

알고리즘은 main memory에서 문제

소수는 나누기 할때는 안좋지만 알고리즘할때는 많이 사용한다.

이미지를 한장으로 묶어서 주는 원인은 속도문제이기 때문이다.

 

1)WebContent디렉토리 안에 resources/images 디렉토리를 생성

 

 

2)이미지 파일을 디렉토리에 복수

 

**Java Web Project배포

1.프로젝트를 war파일로 export를 합니다.

2.exportwar파일을 tomcat디렉토리의 webapps디렉토리에 복사

 

3. 톰캣 실행

 

=>ip.: ip주소

tomcat port: 9000

프로젝트 이름 : web

http://ip주소:9000/web/image.html

 

 

 

 

반응형

'Study > html,css, javascript' 카테고리의 다른 글

frontEnd-6  (0) 2020.10.15
frontEnd-5  (0) 2020.10.15
frontEnd-4  (0) 2020.10.12
frontEnd-3  (0) 2020.10.12
frontEnd-2  (0) 2020.10.12

+ Recent posts