summary.pptx

Bootstrap


<!DOCTYPE html>

<html lang="en">

<head>

    <title>Bootstrap Example</title>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>

<body>

    <div class="container">

        <h3>Tabs</h3>

        <ul class="nav nav-tabs"><!--<ul class="nav nav-pills">-->

            <li class="active"><a class="na" name="mhome.html" href="#">Home</a></li>

            <li><a class="na" name="menu1.html" href="#">Menu 1</a></li>

            <li><a class="na" name="menu2.html" href="#">Menu 2</a></li>

            <li><a class="na" href="#">Menu 3</a></li>

        </ul>

        <br>


        <div id="contain">

            <p>Main Page...</p>

        </div>

    </div>

</body>

<script>

    $(function () {

        prev = $('li').first();

        $('#contain').load('mhome.html');

        $('.na').click(function () {

            $(prev).removeClass('active');

            d = $(this).attr('name')

            $('#contain').load(d);


            $(this).parent().addClass('active');

            prev = $(this).parent()

        })

    })

</script>

</html>


<ul class="nav nav-pills nav-stacked">

- vertical로 나온다.


<ul class="nav nav-tabs nav-justified">

- 꽉차게 나온다.


[이미지 슬라이드]

Bootstrap Carousel Plugin

'SK고용디딤돌' 카테고리의 다른 글

직무교육 19일차(Bootstrap)  (0) 2017.08.08
직무교육 18일차(jQuery Mobile)  (0) 2017.08.07
직무교육 17일차(jQuery)  (0) 2017.08.04
직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 15일차(jQuery)  (0) 2017.08.02

Bootstrap


1. 구글에서 개발 -> free

2. 반응형 웹 제작 프레임워크이다.

3. ui -> 가장 많이 활용되는 색상이나 어울리는 색상으로 ui 디자인 되어있다.

참고 사이트 : https://www.w3schools.com/bootstrap/

CDN 방식


<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 



Bootstrap Grid System

- colum들의 합이 12가 되어야한다.


Grid Classes

- xs(for phones)

- sm(for tablets)

- md(for desktops)

- lg(for larger desktops)



<div class="container">
  <div class="row">
    <div class="col-*-*"></div>//"col-xs-12"
  </div>
  <div class="row">
    <div class="col-*-*"></div>//"col-xs-3"
    <div class="col-*-*"></div>//"col-xs-3"
    <div class="col-*-*"></div>//"col-xs-6"
  </div>
  <div class="row">
    ...
  </div>

</div> 


<div class="container-fluid">

- layout을 화면에 꽉차게 보여준다.(margin:0)


[Medium Devices]

<div class="container">

    <h1>Medium Grid</h1>


    <!--993까지 md, 992이하로는 sm 적용-->

    <div class="row">

        <div class="col-sm-3 col-md-6" style="background-color:yellow;">

            korea

        </div>

        <div class="col-sm-9 col-md-6" style="background-color:pink;">

            hello

        </div>

    </div>

</div> 


- xs로 설정해주면 아무리 화면크기가 작아져도 끝까지 설정이 유지된다.


<img src="image/sea.jpg" class="img-responsive">

- class 속성 설정해주면 창크기가 줄어들면 이미지 사이즈도 같이 줄어든다.








































'SK고용디딤돌' 카테고리의 다른 글

직무교육 20일차(Bootstrap)  (0) 2017.08.09
직무교육 18일차(jQuery Mobile)  (0) 2017.08.07
직무교육 17일차(jQuery)  (0) 2017.08.04
직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 15일차(jQuery)  (0) 2017.08.02

UI Framework

- 스타일시트를 이용해 화면구성 해놓은 라이브러리이다.


1. 스마트폰용 : jqm, 센차터치, jq touch

2. pc : bootstrap(반응형),  jquery ui...


스마폰 개발(카메라, 센서 ) 및 배포 라이브러리(하이브리드웹(폰갭 + html5))


 

 Native App

 Web App

 실행속도

 빠름

 일반적으로 느림

 플랫폼

 플랫폼마다 제작하여야 함

 하나의 버전으로 모든 플랫폼에서 실행 가능

 배포

 앱 마켓을 통한 배포

 배포할 필요가 없음

 버전 업데이트

 상당한 시간이 걸림

 즉시 반영된다.

 오프라인시

 사용가능

 약간의 기능 사용 가능


[jQuery Mobile]

https://jquerymobile.com/ -> Download -> CDN 방식

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 


참고사이트

https://www.w3schools.com/jquerymobile/


<div data-role="footer" data-position="fixed">

- fixed로 설정해주면 footer를 하단에 고정할 수 있다.


<a href="#pagetwo">두번째 페이지</a>

- 두번째 페이지 id값으로 href 설정해주면 페이지 이동할 수 있다.


<a href="pgtwo.html">두번째 페이지</a>

- 파일 분리했을 경우 파일명으로 href 설정해주면 페이지 이동할 수 있다.


<div data-role="page" id="pagetwo" data-dialog="true">

- dialog로 새로운 창이 뜨다.


<a href="pgtwo.html" data-transition="slide">두번째 페이지</a>

- slide로 페이지 이동한다.


data-direction="reverse"

- 모든 속성이 반대로 변경된다.(slide -> 왼쪽, 오른쪽)


다른 애니메이션 속성들 참고 사이트 : https://www.w3schools.com/jquerymobile/jquerymobile_transitions.asp


[Button 적용]

<input type="button" value="Button">

<button class="ui-btn">Button</button>

<button class="ui-btn ui-btn-inline">Button</button> //버튼이 가로로 길게 나오지 않고 content 크기만큼만

<a href="#anylink" class="ui-btn">Button</a>


<div data-role="controlgroup" data-type="horizontal">

<a href="#" class="ui-btn">Button 1</a>

<a href="#" class="ui-btn">Button 2</a>

<a href="#" class="ui-btn">Button 3</a>

- button 그룹으로 묶어서 일직선상에  button 놓인다.


<a href="#" class="ui-btn" data-rel="back">Go Back</a>

- href를 따로 설정해주지 않아도 이전 페이지로 돌아간다.


[jQuery Mobile Icons]

https://www.w3schools.com/jquerymobile/jquerymobile_ref_icons.asp


ui-btn-icon-notext

- button class속성에 설정하면 text는 나오지않고 아이콘만 나온다.


[Panel]

<div data-role="panel" id="myPanel">

<h2>Panel Header..</h2>

<p>Some text..</p>

</div>//header위쪽에 배치

<a href="#myPanel" class="ui-btn ui-btn-inline">Open Panel</a>//content 안에 배치



<div data-role="collapsible">

<h1>Click me - I'm collapsible!</h1>

<p>I'm the expanded content.</p>

</div>//content 안에 배치

- data-collapsed="false"로 설정하면 처음부터 내용 펼쳐져서 보여진다.


[Table]

필터링하기

1. tabla header에  data-priority="1" 속성을 부여한다.

2. table에 data-mode="columntoggle" 속성을 부여한다.

3. table에 data-column-btn-text="Click me!" 속성을 부여하면 필터링 버튼 글자 변경할 수 있다.


[List View]

<ul data-role="listview" data-inset="true">

<li><a href="#">한국</a></li>

<li>한국2</li>

<li><a href="#">한국3</a></li>

</ul>

- content 안에 배치한다.

- data-inset="true"를 설정해주면 margin생긴다.


<li data-role="list-divider">과일</li>

- 항목에 대한 카테고리를 지정해 구분할 수 있다.


<li><a href="#"><img src="image/b.png" class="ui-li-icon">USA</a></li>

- class="ui-li-icon"설정해주면 text 옆에 16*16사이즈의 사진이 들어간다.

- 미설정시 32*32사이즈


추가버튼 눌러 list 추가하기

function fn() {

$('[data-role="listview"]').append('<li><a href="#">Europe</a></li>');

$('[data-role="listview"]').listview('refresh');//설정해야 디자인이 적용된다.

}


[Form]

<div class="ui-field-contain">

- text와 input이 한줄에 나온다.


+ arr.join('-') : 배열에 들어있는 것들 -로 구분할 수 있다.

+ arr.join('\n') : 배열에 들어있는 것들을 개행할 수 있다.


arr=[];

function fn() {

arr.push($('#fullname').val());

arr.push($('#bday').val());

arr.push($('#email').val());

arr.push($('[name="gender"]:checked').val());//radio

$('[name="favcolor"]:checked').each(function (i, v) {//checkbox

arr.push($(v).val());

})

arr.push($('#day>option:selected').val());//select

//console.log(arr.join('-'));

$('#info').val(arr.join('\n'));



$("#pageone").on("swipeleft",function(){

$.mobile.changePage("ptwo.html");

});

- id pageone인 페이지에서 왼쪽으로 swipe하면 ptow.html로 이동한다.

- $.mobile.changePage("ptwo.html", {transition:"slide"});로 설정하면 slide로 페이지가 이동한다.


$(document).on("pageshow", "#pagetwo", function() {

$('#oname').val($('#fullname').val());

})


- pagetwo로 이동하면서 id oname인 input에 pageone에 있던 id fullname 값을 넣어준다.

'SK고용디딤돌' 카테고리의 다른 글

직무교육 20일차(Bootstrap)  (0) 2017.08.09
직무교육 19일차(Bootstrap)  (0) 2017.08.08
직무교육 17일차(jQuery)  (0) 2017.08.04
직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 15일차(jQuery)  (0) 2017.08.02

hw_0804.zip

[AJAX]


.load();

$('#mydiv').load('a.jsp');

- HTML 전용 ajax


$.getJSON('c.jsp', function (data) {

/* data.forEach(function(v, i) {

})//javascript 함수 */

$.each(data, function (i, v) {

//console.log(v.name, v.age);

console.log(v.name);

$('#mytable').append('<tr><td>'+v.name+'</td><td>'+v.age+'</td></tr></table>')

})//jquery 함수

});//JSON 전용 AJAX 



n = $('#name').val();

a = $('#age').val();

data = {name:n, age:a};

/* data = {name:'김원정', age:23} */

$('#mydiv').load('b.jsp', data);

- b.jsp로 data 넘길 때


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<script src="js/jquery-3.2.1.min.js"></script>

<script>

function fn() {

//DataType : html

//$('#mydiv').load('a.jsp');

datas = {name : '홍길동', age : 30};

option={type:'get', url:'b.jsp', data:datas, dataType:'html', success:sFn, error:errFn};

$.ajax(option);

//DataType : JSON

//$.getJSON('c.jsp');

option = {type : 'get', url : 'c.jsp', dataType : 'json', success : sFn, error : errFn};

$.ajax(option); 

//DataType : XML

option = {type : 'get', url : 'my.xml', dataType : 'xml', success : sFn, error : errFn};

$.ajax(option);

}

function sFn(data) {

console.log(data);

//DataType : XML

/* $(data).find('student').each(function(i, v) {

//.children().eq() 사용

//console.log($(v).children().eq(0).text());

//console.log($(v).children().eq(1).text());

//.find() 사용 

//console.log($(v).find('sname').text());

//console.log($(v).find('age').text());

}); */

//mydiv.innerHTML = data;

}

function errFn(err) {

mydiv.innerHTML = err;

}

</script>

</head>

<body>

<div id="mydiv">표시</div>

<button onclick="fn()">확인</button>

</body>

</html> 


include directive

include action



.parseXML()

data = $.parseXML(data);

- xml문자열을 xml객체로 변환해준다.

'SK고용디딤돌' 카테고리의 다른 글

직무교육 19일차(Bootstrap)  (0) 2017.08.08
직무교육 18일차(jQuery Mobile)  (0) 2017.08.07
직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 15일차(jQuery)  (0) 2017.08.02
직무교육 14일차(HTML5 API)  (0) 2017.08.01

[TRAVERSING]

.end();

- 메소드 체인에서 이전요소로 돌아간다.

('ul').find('.foo').css('background-color', 'red').end().find('.bar').css('background-color', 'green');

- ul태그에서 foo를 찾아서 배경색을 red로 바꾼 후, end()를 만나 foo가 아닌 ul태그를 재선택한 후 bar를 찾아 배경색을 green을 바꾼다.


[MANIPULATION]

.append()

- selector의 child로 추가된다.

$('.container').append($('#myp'));

- id myp를 .container의 child로 이동시켜 추가한다.


.after() : selector 다음에 sibling(형제관계)로 추가된다.

.before() : selector 이전에 sibling(형제관계)로 추가된다.

* 동급으로 추가해주고 싶으면 .after() / .before() 사용


.insertBefore()

$('h2').insertBefore($('.container'));

- h2가 .container 앞쪽으로 재배치된다.


.insertAfter()

$('h2').insertAfter($('.container'));

- h2가 .container 뒤쪽으로 재배치된다.


.replaceAll()

$('<h1>replace data</h1>').replaceAll('.inner');

- .inner 내용이 <h1>replace data</h1>로 바뀐다.

- CSS에서 h1 스타일 지정되어있으면 적용된다.


.wrap()

$('p').wrap('<div class="new"></div>')

- p태그가 <div class="new"></div>로 감싸진다.

- p태그가 여러개이면 하나씩 개별적으로 각각 <div></div>로 감싸진다.


.wrapAll()

$('p').wrapAll('<div class="new"></div>')

- p태그가 <div class="new"></div>로 감싸진다.

- p태그가 여러개이면 한꺼번에 <div></div>로 감싸진다.


.wrapInner()

$('p').wrapInner('<div class="new"></div>');

- p태그 안쪽으로 <div class="new"></div>가 생긴다.



.addClass()

$('#mydiv').addClass('myclass');

- mydiv에 class="myclass" 속성을 추가한다.


.removeClass()

$('#mydiv').removeClass('myclass');

- mydiv에 class="myclass" 속성을 제거한다.


[EVENTS]


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function init() {

            //방법1

            /*mybtn.onclick = function () {

                alert('a');


            }*/

            //방법2

            /*mybtn.addEventListener("click", function () {

                alert('b');

            })*/


            //방법3(btnClick 함수 필요)

            //mybtn.onclick = btnClick;

            //방법4(btnClick 함수 필요)

            //mybtn.addEventListener("click", btnClick);

            //방법5(btnClick 함수 필요)

            //$('#mybtn').click(btnClick);

            //방법6(btnClick 함수 필요)

            //$('#mybtn').on('click', btnClick);

        }

        function btnClick() {

            alert('c');

        }

    </script>

</head>

<body onload="init()">

<button id="mybtn">button</button>

</body>

</html>


$(document).ready(init);

$(init);

<body onload="init()>

- 세가지 방법 모두 결과는 같다.


$(document).ready(function () {

})

        

$(function () {

})

- 두가지 방법 모두 결과는 같다.


.click()

$(function () {

            $('div').click(function () {

                alert($(this).text()); //alert(this.innerText)

            })

$('#mybtn').click(function () {

     alert('call...');

 })

        })

- div 내용 click시 alert창에 div 내용이 뜬다.

- mybtn click시 alert창에 call....이 뜬다.


<Mouse Events>

$(document).ready(init);

        function init() {

            $('#mydiv').mousedown(function (event) {

                console.log(event.clientX, event.clientY);

            })//1

            $('#mydiv').mousemove(function (event) {

                console.log(event.clientX, event.clientY);

            })//2

            $('#mydiv').on('mousemove', function (event) {

                console.log(event.clientX, event.clientY);

            })//3

            $('#mydiv').hover(function () {

                $(this).css('background-color', 'blue')

            }, function () {

                $(this).css('background-color', 'yellow')

            })//4

        } 


#1> mydiv 클릭했을 경우 발생한다.

#2> mydiv 클릭했다 뗐을 경우 발생한다.

#3> 2번과 결과는 같다.

#4> 마우스 hover됐을 경우 발생한다.


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        $(function () {

            $('#mydiv').click(cfn)

        })

        function cfn() {

            alert('call')

        }

        function rfn() {

            $('#mydiv').off("click", cfn)

        }

        function afn() {

            $('#mydiv').on("click", cfn)

        }

    </script>

</head>

<body>

    <div id="mydiv">mydiv</div><br>

    <button onclick="afn()">확인</button>

    <button onclick="rfn()">취소</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        $(function () {

            //$('li').click(cfn)

            $(document).on('click', 'li', cfn)

        })

        function cfn() {

            alert('call')

        }

        function afn() {

            $('ul').append('<li>추가</li>')

        }

    </script>

</head>

<body>

<ul>

    <li>list</li>

</ul>

    <button onclick="afn()">추가</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        table{

            width: 400px;

            text-align: center;

        }

    </style>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        $(function () {

            $(document).on("click", ".bdel", function () {

                $(this).parent().parent().remove();

            })


            $(document).on("click", ".bmodify", function () {

                $(this).parent().prev().prev().attr('contenteditable', true);

                $(this).parent().prev().attr('contenteditable', true);

                $(this).text('완료');

            })

        })

        function addFn() {

            $('#mytable').append('<tr><td>테스트</td><td>20</td>' +

                '<td><button class="bmodify">수정</button></td>' +

                '<td><button class="bdel">삭제</button></td></tr>');


        }    

    </script>

</head>

<body>

<button onclick="addFn()">추가하기</button><br>

    <table id="mytable" border="1">

        <tr>

            <th>이름</th>

            <th>나이</th>

            <th colspan="2">편집</th>

        </tr>

    </table>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        $(function () {

            $('[name="grade"]').click(function () {

                alert($(this).val())

            })

            $('#mysel').change(function () {

                alert($(this).val())

            })

            $('#myin').keyup(function () {

                $('#myin1').val($(this).val());

            })

        })

    </script>

</head>

<body>

    이름 : <input id="myin" type="text"><br>

    이름 : <input id="myin1" type="text"><br>

    <input type="radio" name="grade" value="1학년">1학년<br>

    <input type="radio" name="grade" value="2학년">2학년<br>

    <input type="radio" name="grade" value="3학년">3학년<br>


    <select id="mysel">

        <option value="선택1">선택1</option>

        <option value="선택2">선택2</option>

        <option value="선택3">선택3</option>

    </select>


</body>

</html> 


 <!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        img{

            width: 150px;

            height:150px;

        }

    </style>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        $(function () {

                $(document).on("click", "img", function () {

                    $('#wrap').prepend($(this));

                })

                /*$("img").click(function () {

                    $('#wrap').prepend($(this))

                })*/

        })

    </script>

</head>

<body>

<div id="wrap">

    <img src="image/aa.jpg">

    <img src="image/bb.png">

    <img src="image/c.jpg">

    <img src="image/d.jpg">

</div>

</body>

</html>


[EFFECTS]


.hide()

 $('#myimg').hide(3000, function () {

console.log('end...')

$('#mydiv').text('hide~~~~')

})

- 나타난다.(3초동안 서서히).


.show()

 $('#myimg').show(3000, function () {

console.log('end...')

$('#mydiv').text('hide~~~~')

})

- 나타난다.(3초동안 서서히).


.toggle()

$('#myimg').toggle(2000);

- 숨겨져있으면 보여지게되고, 보여지고 있으면 숨겨진다.


.slideDown()

$('#mydiv').slideDown(1000);`


.slideUp()

$('#mydiv').slideUp(1000);`


.animate()

imgattr = {width:"300px", height:"300px", left:"100px"}

$('#myimg').animate(imgattr, 2000);

- imgattr 속성값으로 움직인다.(2초동안 서서히)


내용보기 text 클릭시 아래 내용 나오는 예제

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        #title, #panel{

            background-color: #ffd8c5;

            color: white;

            border-radius: 10px;

            border:2px solid #ff9490;

            text-align: center;

        }

        #panel{

            display: none;

        }

    </style>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        var isdown = false;

        $(function () {

            $('#title').click(function () {

                if(isdown){

                    $('#panel').slideUp(1000);

                    isdown=false;

                }else{

                    $('#panel').slideDown(1000);

                    isdown=true;

                }

            })

        })

    </script>

</head>

<body>

    <div id="title">내용보기</div>

    <div id="panel">나는 자랑스런 태극기 앞에

    조국과 민족의 무궁한 영광을 위하여

    </div>

</body>

</html> 




.removeAttr();

$(this).removeAttr('style');

- style 속성을 제거한다.


이미지 클릭시 이미지 확대되는 예제

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        img{

            position: relative;

            width: 150px;

            height:150px;

        }

    </style>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        var prevElm;

        $(function () {

            $('img').click(function () {

                $(prevElm).removeAttr('style');

                imgattr = {width:"300px", height:"300px", left:"100px"}

                $(this).animate(imgattr, 1000, function () {

                    prevElm = this;

                })

            })

        })

    </script>

</head>

<body>

<div id="wrap">

    <img src="image/aa.jpg"><br>

    <img src="image/bb.png"><br>

    <img src="image/c.jpg"><br>

    <img src="image/d.jpg"><br>

</div>

</body>

</html> 


2017-08-02 과제

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        #wrap{

            padding: 4%;

            margin:auto;

            text-align: center;

        }

        body{

            background-color: gainsboro;

        }

        img{

            position: relative;

            width: 200px;

            height:400px;

            vertical-align: middle;

        }

        .story{

            border: 1px solid;

            padding: 2%;

        }

        div.m1,div.m2, div.m3, div.m4, div.m5{

            margin: auto;

            width: 80%;

            display: none;

            padding: 0 2% 2% 2%;

            border: 1px solid;

        }

        .aaa{

            width: 150px;

            height:150px;

        }

        .one{

            text-align: center;

        }

    </style>


    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        var prevElm;

        var cn;

        $(function () {

            $('[src^="image/m"]').click(function () {

                $(prevElm).removeAttr('style');

                /*$(#wrap).append($(this));

                * $('img:eq(1)').after($(this));*/

                $('img:eq(2)').before($(this));

                if($('img:eq(0)')){

                    $('img:eq(3)').before($(this));

                }

                imgattr = {width:"250px", height:"500px"}

                $(this).animate(imgattr, 500, function () {

                    prevElm = this;

                    cn = prevElm.className;

                    $("div."+cn).show();

                })

                $("div."+cn).hide();

            })

        })

    </script>

</head>

<body>

<div id="mydiv">

<div id="wrap">

    <img class="m1" src="image/m1.jpg">

    <img class="m2" src="image/m2.jpg">

    <img class="m3" src="image/m3.jpg">

    <img class="m4" src="image/m4.jpg">

    <img class="m5" src="image/m5.jpg">

</div><br>



    <div class="m1">

        <h2>영화제목</h2>

        택시운전사

        <h2>영화이미지</h2>

        <div class="one">

            <img class="aaa" src="image/1_1.jpg">

            <img class="aaa" src="image/1_2.jpg">

            <img class="aaa" src="image/1_3.jpg">

            <img class="aaa" src="image/1_1.jpg">

            <img class="aaa" src="image/1_2.jpg">

            <img class="aaa" src="image/1_3.jpg">

            <img class="aaa" src="image/1_1.jpg">

            <img class="aaa" src="image/1_2.jpg">

            <img class="aaa" src="image/1_3.jpg">

        </div>

        <h2>영화줄거리</h2>

        <div class="story">

            1980년 5월, 서울 택시운전사.<br>

            “광주? 돈 워리, 돈 워리! 아이 베스트 드라이버”<br>

            택시운전사 만섭(송강호)은 외국손님을 태우고 광주에 갔다 통금 전에 돌아오면<br>

            밀린 월세를 갚을 수 있는 거금 10만원을 준다는 말에<br>

            독일기자 피터(토마스 크레취만)를 태우고 영문도 모른 채 길을 나선다.<br>

            광주 그리고 사람들. “모르겄어라, 우덜도 우덜한테 와 그라는지…”<br>

            어떻게든 택시비를 받아야 하는 만섭의 기지로 검문을 뚫고 겨우 들어선 광주.<br>

            위험하니 서울로 돌아가자는 만섭의 만류에도<br>

            피터는 대학생 재식(류준열)과 황기사(유해진)의 도움 속에 촬영을 시작한다.<br>

            그러나 상황은 점점 심각해지고 만섭은 집에 혼자 있을 딸 걱정에 점점 초조해지는데…<br>

        </div>

    </div>


    <div class="m2">

        <h2>영화제목</h2>

        군함도

        <h2>영화이미지</h2>

        <div class="one">

            <img class="aaa" src="image/2_1.jpg">

            <img class="aaa" src="image/2_2.jpg">

            <img class="aaa" src="image/2_3.jpg">

            <img class="aaa" src="image/2_1.jpg">

            <img class="aaa" src="image/2_2.jpg">

            <img class="aaa" src="image/2_3.jpg">

            <img class="aaa" src="image/2_1.jpg">

            <img class="aaa" src="image/2_2.jpg">

            <img class="aaa" src="image/2_3.jpg">

        </div>

        <h2>영화줄거리</h2>

        <div class="story">

            1945년 일제강점기.<br>

            경성 반도호텔 악단장 ‘강옥’(황정민)과 그의 하나뿐인 딸 ‘소희’(김수안).<br>

            그리고 종로 일대를 주름잡던 주먹 ‘칠성’(소지섭), 일제 치하에서 온갖 고초를 겪어온 ‘말년’(이정현) 등<br>

            각기 다른 사연을 품은 조선인들이 일본에서 돈을 벌 수 있다는 말에 속아 군함도로 향한다.<br>

            하지만 그들이 함께 탄 배가 도착한 곳은 조선인들을 강제 징용해 노동자로 착취하고 있던 ‘지옥섬’ 군함도였다.<br>

            영문도 모른 채 끌려온 조선인들이 해저 1,000 미터 깊이의 막장 속에서<br>

            매일 가스 폭발의 위험을 감수하며 노역해야 하는 군함도.<br>

            강옥은 어떻게 하든 일본인 관리의 비위를 맞춰 딸 소희만이라도 지키기 위해 온갖 수를 다하고,<br>

            칠성과 말년은 각자의 방식으로 고통스런 하루하루를 견뎌낸다.<br>

            한편 전쟁이 막바지로 치닫자 광복군 소속 OSS 요원 ‘무영’(송중기)은<br>

            독립운동의 주요인사 구출 작전을 지시 받고 군함도에 잠입한다.<br>

            일본 전역에 미국의 폭격이 시작되고 일본의 패색이 짙어지자<br>

            일본은 군함도에서 조선인에게 저지른 모든 만행을 은폐하기 위해 조선인들을 갱도에 가둔 채 폭파하려고 한다.<br>

            이를 눈치 챈 무영은, 강옥, 칠성, 말년을 비롯한 조선인 모두와 군함도를 빠져나가기로 결심하는데...!<br>

            지옥섬 군함도, 조선인들의 목숨을 건 탈출이 시작된다!<br>

        </div>

    </div>


    <div class="m3">

        <h2>영화제목</h2>

        슈퍼배드3

        <h2>영화이미지</h2>

        <div class="one">

            <img class="aaa" src="image/3_1.jpg">

            <img class="aaa" src="image/3_2.jpg">

            <img class="aaa" src="image/3_3.jpg">

            <img class="aaa" src="image/3_1.jpg">

            <img class="aaa" src="image/3_2.jpg">

            <img class="aaa" src="image/3_3.jpg">

            <img class="aaa" src="image/3_1.jpg">

            <img class="aaa" src="image/3_2.jpg">

            <img class="aaa" src="image/3_3.jpg">

        </div>

        <h2>영화줄거리</h2>

        <div class="story">

            전 세계를 점령할 놈들이 온다!<br>

            최고의 악당만을 보스로 섬기는 ‘미니언’<br>

            가족을 위해 악당 은퇴를 선언한 ‘그루’<br>

            그루의 배신에 실망한 미니언들은<br>

            스스로 악당이 되기 위해 그루를 떠난다.<br>

            한편, 같은 얼굴 다른 스펙의 쌍둥이 동생 ‘드루’의 등장으로 인해<br>

            그루는 자신이 역사상 가장 위대한 악당 가문의 후예임을 알게 되고,<br>

            거부할 수 없는 슈퍼배드의 운명을 따르게 되는데…<br>

            돌아온 그루와 미니언들은<br>

            다시 함께할 수 있을까?<br>

        </div>

    </div>


    <div class="m4">

        <h2>영화제목</h2>

        명탐정코난:진흥의 연가

        <h2>영화이미지</h2>

        <div class="one">

            <img class="aaa" src="image/4_1.jpg">

            <img class="aaa" src="image/4_2.jpg">

            <img class="aaa" src="image/4_3.jpg">

            <img class="aaa" src="image/4_1.jpg">

            <img class="aaa" src="image/4_2.jpg">

            <img class="aaa" src="image/4_3.jpg">

            <img class="aaa" src="image/4_1.jpg">

            <img class="aaa" src="image/4_2.jpg">

            <img class="aaa" src="image/4_3.jpg">

        </div>

        <h2>영화줄거리</h2>

        <div class="story">

            오사카와 교토에서 발생한 의문의 사건들!<br>

            헤이지와 카즈하, 그리고 모미지의 운명은 과연?!<br>

            갑작스러운 폭발로 대혼란에 빠지고 만 오사카의 한 TV 방송국.<br>

            마치 테러와도 같은 사건. 하지만 범인의 정체는 물론 범행 목적조차 파악되지 않는 상황이 계속되고,<br>

            혼란 속에서 코난과 친구들은 헤이지의 약혼자임을 주장하며 당돌하게 대시하는 카루타(일본의 전통 카드 게임)<br>

            대회 고교 챔피언 오오카 모미지를 만나 더욱 당황한다.<br>

            한편, 방송국 폭발과 동시에 교토에서는 카루타 대회 2년 연속 우승자가 살해당하는 사건이 발생하고,<br>

            현장의 TV에서는 다름 아닌 모미지의 경기 모습과 함께 한편의 시가 고요히 울려 퍼지고 있었는데......<br>

        </div>

    </div>


    <div class="m5">

        <h2>영화제목</h2>

        덩케르트

        <h2>영화이미지</h2>

        <div class="one">

            <img class="aaa" src="image/5_1.jpg">

            <img class="aaa" src="image/5_2.jpg">

            <img class="aaa" src="image/5_3.jpg">

            <img class="aaa" src="image/5_1.jpg">

            <img class="aaa" src="image/5_2.jpg">

            <img class="aaa" src="image/5_3.jpg">

            <img class="aaa" src="image/5_1.jpg">

            <img class="aaa" src="image/5_2.jpg">

            <img class="aaa" src="image/5_3.jpg">

        </div>

        <h2>영화줄거리</h2>

        <div class="story">

            "우린 끝까지 싸울 것이다"

            살아남는 것이 승리다!

            해변: 보이지 않는 적에게 포위된 채 어디서 총알이 날아올지 모르는 위기의 일주일<br>

            바다: 군인들의 탈출을 돕기 위해 배를 몰고 덩케르크로 항해하는 하루<br>

            하늘: 적의 전투기를 공격해 추락시키는 임무, 남은 연료로 비행이 가능한 한 시간<br>

            “우리는 해변에서 싸울 것이다. 우리는 상륙지에서 싸울 것이다. 우리는 들판에서 싸우고 시가에서도 싸울 것이다. 우리는 끝까지 싸울 것이다”<br>

        </div>


</div>

</div>

</body>

</html> 


'SK고용디딤돌' 카테고리의 다른 글

직무교육 18일차(jQuery Mobile)  (0) 2017.08.07
직무교육 17일차(jQuery)  (0) 2017.08.04
직무교육 15일차(jQuery)  (0) 2017.08.02
직무교육 14일차(HTML5 API)  (0) 2017.08.01
직무교육 13일차(HTML5 API)  (0) 2017.07.26

[jQuery]

· 자바스크립트 라이브러리

- 자바스크립트를 사용하기 쉽게 포장해놓은 것이다.

- cross browser - 브라우저 종류 상관없이 자바스크립트를 지원하기 위한 목적이다.

- DOM을 쉽게 다루도록 포장해놓은 것이다.

- chane식 메소드 방식이다. (DOM객체(객체).함수.함수.함수)


· jQuery 사용 방법

1) cdm 방식

https://code.jquery.com/jquery-3.2.1.min.js

2) 설치 방식

http://jquery.com/download/

Download the compressed, production jQuery 3.2.1


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script>

        function $(sel) {

            domObj = document.querySelector(sel);

            return domObj;

        }


        function fn() {

            $('#mydiv').innerText="korea";

        }

    </script>

</head>

<body>

    <div id="mydiv">표시</div>

    <button onclick="fn()">확인</button>

</body>

</html>

 <!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script>

        function $(sel) {

            domObj = document.querySelector(sel);

            domObj.text = function (txt) {

                this.innerText=txt;

            }

            return domObj;

        }


        function fn() {

            $('#mydiv').text('korea2');

        }

    </script>

</head>

<body>

    <div id="mydiv">표시</div>

    <button onclick="fn()">확인</button>

</body>

</html>


· jQuery 문장의 구조

- $('선택자').메소드

- $(객체).메소드

- $('태그').메소드


· jQuery cheat sheet

https://oscarotero.com/jquery/


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn(){

            $('#mydiv').text('korea');

            

            s=$('#mydiv').text();//id가 mydiv인 div의 값을 받아온다.

            alert(s);

            

            $('#mydiv').css('color', 'blue').text('하하하').css('background-color', 'yellow');

            //체인방식으로 여러가지 함수를 사용할 수 있다.


            $('#mydiv').css({'color':'red', 'background-color':'yellow'})

            //속성을 여러가지 주고 싶을 경우에는 JSON 형식으로!

        }

    </script>

</head>

<body>

    <div id="mydiv">표시</div>

    <button onclick="fn()">확인</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('*').css('color', 'red');

            $('div').css('color', 'red');

            $('.myp').text('korea');

            $('p, div').css('color', 'red');

            $('p.myp').css('color', 'red');

            $('div li').css('color', 'red');

            $('ul>li').text('korea');

        }

    </script>

</head>

<body>

    <h1>Title</h1>

    <h2 class="myp">hi1</h2>

    <p class="myp">hi2</p>

    <p>hi3</p>

    <div id="mydiv">test1</div>

    <div>test2</div>

    <div>

        <ul>

            <li>사과</li>

            <li>딸기</li>

            <li>포도</li>

            <li>수박</li>

        </ul>

    </div>

    <ul>

        <li>참외</li>

        <li>메론</li>

        <li>자두</li>

    </ul>

    <button onclick="fn()">check</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('#myli + li').css('color', 'red');//id가 myli의 오른쪽 옆 형제만

            $('#myli ~ li').css('color', 'red');//id가 myli의 오른쪽 형제 모두

            $('[src]').css('border', '2px solid red');//src 속성이 있는 것

            $('[src="image/a.jpg"]').css('border', '2px solid red');//src 속성이 image/a.jpg인 것

            $('[src*="jpg"]').css('border', '2px solid red');//src 속성에 jpg가 있는 것

            $('[src^="image"]').css('border', '2px solid red');//src 속성이 image로 시작하는 것

            $('[src$="jpg"]').css('border', '2px solid red');//src 속성이 jpg로 끝나는 것

            $('p[class]').css('color', 'red');//p태그에 class 속성이 있는 것

        }

    </script>

</head>

<body>

    <div class="mydiv">test1</div>

    <p class="mydiv">test2</p>

    <ul>

        <li id="myli">수박</li>

        <li>참외</li>

        <li>메론</li>

    </ul>

    <img src="image/a.jpg">

    <img src="image/b.jpg"><br>

<button onclick="fn()">button</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('li:even').css('color', 'red');

            $('li:odd').css('color', 'red');

            $('li:first').css('color', 'red');

            $('li:last').css('color', 'red');

            $('li:eq(8)').css('color', 'red');

            $('li:gt(2)').css('color', 'red');//inded2보다 큰 것->index3부터

            $('li:lt(3)').css('color', 'red');//index3보다 작은 것 ->index0~2

            $('li:not(:first)').css('color', 'red');//first가 아닌 것

            $('li:not(:eq(2))').css('color', 'red');//index2가 아닌 것

            $('li:contains("hello")').css('color', 'red');//li에 text가 hello인 것

            $('div:has(span)').css('color', 'red');//div태그에서 span태그를 가지고 있는 것

            $('li:nth-child(2n)').css('color', 'red');

        }

    </script>

</head>

<body>

    <div>test1</div>

    <div><span>test2</span></div>

    <ul>

        <li>fruit0</li>

        <li>fruit1</li>

        <li>hello</li>

        <li>fruit3</li>

        <li>fruit4</li>

        <li>fruit5</li>

        <li>fruit6</li>

        <li>fruit7</li>

        <li>fruit8</li>

        <li>fruit9</li>

    </ul>

    <button onclick="fn()">check</button>


</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            num1=$('#num1').val();//id num1의 값 받아오기

            num2=$('#num2').val();//id num2의 값 받아오기

            result = Number(num1)+ Number(num2);//문자이기때문에 숫자로 변환 후 덧셈

            $('#mya').text(result);//값 입력할 때 text

        }

    </script>

</head>

<body>

    숫자1 : <input id="num1" type="number"><br>

    숫자2 : <input id="num2" type="number"><br>

    결과 : <a id="mya"></a><br>

    <button onclick="fn()">계산</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        arr=[10,20,30,40];

        arr.forEach(function (v, i) {

            console.log(v, i);

        })


        $.each(arr,function (i, v) {

            console.log(i, v);

        })


        j={'name':'홍길동', 'age':20}

        $.each(j, function (i, v) {

        console.log(i, v);

        })


        function fn() {

            liarr = document.querySelectorAll('li')

             for(n=0; n<liarr.length; n++){

             console.log(liarr[n].innerText);

             }


            $('li').each(function (i, v) {

                console.log(i, v);

                console.log(v.innerText);

                console.log($(v). text());

                console.log($(this).text());

            })

        }

    </script>

</head>

<body>

    <ul>

        <li>test1</li>

        <li>test2</li>

        <li>test3</li>

        <li>test4</li>

    </ul>

<button onclick="fn()">button</button>

</body>

</html> 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn1() {

            a = $('[name="hobby"]:checked').val();

            $('#mydiv1').text(a);

        }



        function fn2() {

            var s=""

            s = $('[type="checkbox"]:checked').each(function (i, v) {

                //console.log($(v).val());

                s += $(v).val();

                $('#mydiv2').text(s);

            });

        }


        function fn3() {

            b = $('[name="job"]>option:selected').val();

            $('#mydiv3').text(b);

        }



    </script>

</head>

<body>

    hobby1 : <a id="mydiv1"></a>

    <fieldset>

        수영 : <input type="radio" value="수영" name="hobby"><br>

        낚시 : <input type="radio" value="낚시" name="hobby"><br>

        영화 : <input type="radio" value="영화" name="hobby"><br>

    </fieldset>

    <button onclick="fn1()">button1</button><br><br>



    hobby2 : <a id="mydiv2"></a>

    <fieldset>

        수영 : <input type="checkbox" value="수영"><br>

        낚시 : <input type="checkbox" value="낚시"><br>

        영화 : <input type="checkbox" value="영화"><br>

    </fieldset>

    <button onclick="fn2()">button2</button><br><br>



    company : <a id="mydiv3"></a><br>

    <select name="job">

        <option value="회사1">회사1</option>

        <option value="회사2">회사2</option>

        <option value="회사3">회사3</option>

    </select>

    <button onclick="fn3()">button3</button><br><br>

</body>

</html> 


 <!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('img').attr('src', 'image/b.jpg');

            s = $('img').attr('src');//img태그의 src가 어떤 값인지 궁금할 때

            alert(s);

            s = $('#mycheck').attr('checked');

           alert(s)

           $('#mycheck').prop('checked', false);//버튼누르면 체크됨

        }

    </script>

</head>

<body>

    <img src="image/a.jpg"><br>

    <input id="mycheck" type="checkbox"><br>

    <button onclick="fn()">OK</button>

</body>

</html>


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('#mydiv1').html('<h1>korea</h1>');//id mydiv1 내용을 korea로 변경

            /*추가*/

            $('#mydiv1').append('<h1>korea</h1>');//버튼 누를 때마다 id mydiv1 다음에 korea 추가

                //$('<h1>korea</h1>').appendTo('#mydiv1');

                /*h1 = document.createElement('h1');

                h1.innerText='korea';

                mydiv1.appendChild(h1);*/

            $('#mydiv1').prepend('<h1>korea</h1>');//버튼 누를 때마다 id mydiv1 앞쪽에 korea 추가


            /*삭제*/

            $('<h1>korea</h1>').prependTo('#mydiv1');

            $('#mydiv2').remove();//id mydiv2 DOM 삭제

            $('div').remove();//div 전체 삭제

            $('#mydiv2').empty();//id mydiv2의 내용 삭제

            $('#mydiv2').hide();//style="display:none;" 다시 나타나게 하려면  $('#mydiv2').show();

        }

    </script>

</head>

<body>

    <button onclick="fn()">button</button>

    <div id="mydiv1">표시1</div>

    <div id="mydiv2">표시2</div>

    <div id="mydiv3">표시3</div>

</body>

</html>


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            name = $('[type = "text"]').val();

            age = $('[type = "number"]').val();


            if(name !="" && age != "") {//입력칸 공백 아닐 경우에만 테이블에 추가

                $('#mytable').append('<tr><td>' + name + '</td><td>' + age + '</td></tr>')

            }else{

                alert("입력해주세요.");

            }

            $('[type = "text"]').val("");

            $('[type = "number"]').val("");

        }


        function rfn() {

            $('tr:gt(0)').remove();//index 0보다 큰 row 삭제

        }

    </script>

</head>

<body>

    이름 : <input type="text"><br>

    나이 : <input type="number"><br>

    <button onclick="fn()">추가</button>

    <button onclick="rfn()">삭제</button><br><br>


    <table border="1" id="mytable">

        <tr>

            <th>이름</th>

            <th>나이</th>

        </tr>

    </table>

</body>

</html>


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>


    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            $('li:first').css('color', 'red');

            //$('li').first().css('color', 'red');


            $('li:eq(1)').css('color', 'red');

            //$('li').eq(1).css('color', 'red');


            $('div.mydiv').css('color', 'red');

            //$('div').filter('.mydiv').css('color', 'red');


            $('div:not(.mydiv)').css('color', 'red')

            //$('div').not('.mydiv').css('color', 'red')

        }

    </script>

</head>

<body>

    <div>test1</div>

    <div class="mydiv">test2</div>

    <p class="mydiv">test3</p>

    <ul>

        <li>항목0</li>

        <li>항목1</li>

        <li>항목2</li>

        <li>항목3</li>

        <li>항목4</li>

        <li>항목5</li>

        <li>항목6</li>

        <li>항목7</li>

    </ul>

    <button onclick="fn()">확인</button>

</body>

</html>


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="js/jquery-3.2.1.min.js"></script>

    <script>

        function fn() {

            /*id mydiv의 자식인 p*/

            $('#mydiv > p').css('color', 'red');

            //$('#mydiv').children('p').css('color', 'red');


            /*id mydiv의 자식+후손인 p*/

            $('#mydiv p').css('color', 'red');

            //$('#mydiv').find('p').css('color', 'red');


            /*id myp의 형제들*/

            $('#myp').next().css('color', 'red');//id myp의 다음에 있는 것

            $('#myp').next().next().css('color', 'red');//id myp의 다음다음에 있는 것

            $('#myp').nextAll().css('color','red');//id myp의 다음에 있는 전부

            $('#myp').prev().css('color', 'red');//id myp의 이전에 있는 것

    

            /*id myp의 부모*/

            $('#myp').parent().css('color', 'red');

        }

    </script>

</head>

<body>

    <div id="mydiv">

        test1

        <div>

            <p>KOREA</p>

        </div>

        <p>check1</p>

        <p id="myp">check2</p>

        <p>check3</p>

        <p>check4</p>

    </div>

    <p>test2</p>

    <button onclick="fn()">OK</button>


</body>

</html> 


'SK고용디딤돌' 카테고리의 다른 글

직무교육 17일차(jQuery)  (0) 2017.08.04
직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 14일차(HTML5 API)  (0) 2017.08.01
직무교육 13일차(HTML5 API)  (0) 2017.07.26
직무교육 12일차(DB연동)  (1) 2017.07.25

아파치서버

#1 context.xml <Context allowCasualMultipartParsing="true"> 

#2 server restart


BLOB : 이미지나 동영상 데이터 타입


이미지삽입(<form action="imageInsert.jsp" method="POST" enctype="multipart/form-data">) -> 서버(insert)
이미지보기 <- 서버(select)


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<script>

function fn(){

xmlHttp = new XMLHttpRequest();

xmlHttp.onreadystatechange = on_ready;

xmlHttp.open("GET", "imageSelect.jsp");

xmlHttp.send();

}

function on_ready(){

if(xmlHttp.readyState==4 && xmlHttp.status==200){

data = xmlHttp.responseText;

data = JSON.parse(data);

data.forEach(function(v, i){

img = document.createElement("img");

img.style.width = "300px";

img.style.height = "300px";

img.src = v.img;

myimg.append(img);

})

}

}

</script>

</head>

<body>

<div id="myimg"></div>

<button onclick="fn()">이미지 보기</button>

</body>

</html>


Server-Sent Event

server쪽에서 client쪽으로 일방적으로 데이터 보내는 것이다.

'SK고용디딤돌' 카테고리의 다른 글

직무교육 16일차(jQuery)  (0) 2017.08.03
직무교육 15일차(jQuery)  (0) 2017.08.02
직무교육 13일차(HTML5 API)  (0) 2017.07.26
직무교육 12일차(DB연동)  (1) 2017.07.25
직무교육 11일차(웹어플리케이션 & ajax)  (0) 2017.07.24

[스토리지(Storage)]


· 웹스토리지는 클라이언트 컴퓨터에 데이터를 저장하는 메카니즘이다.

· 약 5MB 정도까지 저장이 가능하다.

· 쿠키보다 안전하고 속도도 빠르다.

· 데이터는 키/값(key/value)의 쌍으로 저장한다.


· localStorage 객체

- 만료 날짜가 없는 데이터를 저장한다.(영구보관)

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script>

        function fn() {

            localStorage.setItem("name", "홍길동");

            localStorage.age=30;//localStorage.setItem("age", 30);

            localStorage['addr']="서울시 은평구";//localStorage.setItem("addr", "은평구");

        }

        function rfn() {

            console.log(localStorage.name);

            console.log(localStorage.getItem("age"));

            console.log(localStorage['addr']);

        }

    </script>

</head>

<body>

    <button onclick="fn()">저장</button>

    <button onclick="rfn()">읽기</button>

</body>

</html> 


· sessionStorage 객체

- 해당 세션이 종료되면 데이터가 사라진다.

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script>

        function fn() {

            sessionStorage.name="이순신";

            sessionStorage.age=30;

        }

    </script>

</head>

<body>

    <button onclick="fn()">저장</button>

</body>

</html> 


· cookie는 document 속성

function fn() {

            document.cookie = "myname=홍길동;"

        } 


[Geolocation API]


· 사용자의 위치 정보를 얻기 위한 JavaScript API

· 관련 메소드는 window.navigator객체에 정의되어 있다.

· 현재 위치는 한번 얻는다.

- navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);

· 위치 정보는 계속 확인한다.

- var watchId = navigator.watchPosition(successCallback, errorCallback, options);


http://mygeoposition.com/

select * from student where name like '%순%';

- 이름에 순이 들어가는 컬럼 찾을 때


[name과 id 차이]

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Insert title here</title>

    <script>

        function fn() {

            xmlHttp=new XMLHttpRequest();//ajax

            xmlHttp.onreadystatechange=on_ready;

            s=`DBInsert.jsp?myname=${idname.value}&myage=${idage.value}`;

            xmlHttp.open("GET", s);

            xmlHttp.send();//submit

        }

        function on_ready() {

            if(xmlHttp.readyState==4 && xmlHttp.status==200){

                mydiv.innerHTML=xmlHttp.responseText;

            }

        }

    </script>

</head>

<body>

<div id="mydiv">표시</div>

이름 : <input id="idname" type="text" name="myname"><br>

나이 : <input id="idage" type="text" name="myage"><br>

<button onclick="fn()">button</button>

</body>

</html>


myname=${idname.value}&myage=${idage.value}`;

name은 파라미터 값 넘길 때 쓰는 키값

- ajax 사용해서 값 넘길 때

(id)=${id.value}&${id.value}

(name)=${id.value}&${id.value}

- form으로 값 넘길때

name을 사용해서 넘긴다.

XML, JSON, 문자열



cross domain 정책 : html에서 다른 서버의 html 읽을 수 없다.

[웹어플리케이션 아키텍쳐]

· Web Client

     (HTTP request / HTTP response)

· Web Server

· DB Server


[웹 프로토콜 - 통신절차]

· TCP(HTTP)는 3가지 절차를 통해 통신이 이루어진다.

(1) 세션 연결 ( 나는 너와 통신하고 싶다. )

(2) 데이터 송.수신 ( 웹 브라우저에 페이지 로딩 )

(3) 세션 종료 ( 통신 종료 )


<form method="get" action="test.jsp"> </form>

- method default : get(2,083 정도의 길이 데이터만을 처리한다.)


[HTTP Request]

· GET방식

URL 뒤에 이어서 문자열로 서버에 전달을 한다.

URL 뒤에 "?" 마크를 통해 URL의 끝을 알리면서, 데이터 표현의 시작점을 알린다. 

URL에 정보가 그대로 노출되어 보안상 취약하다.

간단한 데이터를 넣도록 설계되어서 전송할 데이터의 제한이 있다.


· POST방식

URL 뒤에 붙여서 보내지 않고 HTTP 바디에 데이터를 넣어서 보낸다.

정보를 드러내지 않아 GET방식 보다 보안에 유리하다.

전송할 데이터의 제한이 없다.


[HTTP Response]

· HTTP Status Code(응답코드) 종류

- 200번 : 요청성공

- 201번 : 원격지서버에 파일 생성

302번 : 페이지이동

- 304번 : 로컬 캐쉬정보이용

- 401번 : 인증실패

- 403번 : 접근금지

- 404번 : 페이지없음

- 500번 : 서버에러


//post 요청인 경우 header 들어가는 스트링

xmlHttp.setRequestHeader('Content-Type', "application/x-www-form-urlencoded;charset=utf-8");

- 설정 안해주면 한글 깨져서 null값이 출력된다.



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    

<%@ page import="java.sql.*" %>

<%

try{

Class.forName("org.gjt.mm.mysql.Driver");

out.print("driver load success"+"<br>");

}catch(Exception ex){

out.print("driver load fail"+"<br>");

}

String mysqlURL="jdbc:mysql://localhost:3306/test";

//sql database가 있는 url과 접속할 database명

String sID="root";

String sPass="1234";

String sql="insert into student(name, age) values ('홍길동', 30)";

Connection conn=null;

Statement stmt=null;

try{

conn=DriverManager.getConnection(mysqlURL, sID, sPass);

stmt=conn.createStatement();

stmt.execute(sql);

conn.close();

out.print("<h1>추가성공</h1>");

}catch(Exception ex){

out.print("<h1>추가실패</h1>");

}finally{

conn.close();

}

%> 


'SK고용디딤돌' 카테고리의 다른 글

직무교육 13일차(HTML5 API)  (0) 2017.07.26
직무교육 12일차(DB연동)  (1) 2017.07.25
직무교육 10일차(JavaScript)  (0) 2017.07.21
직무교육 9일차(JavaScript)  (0) 2017.07.20
직무교육 8일차(JavaScript)  (0) 2017.07.19

+ Recent posts