JavaScript jquery
2018-12-13 00:00:00 +0000JQuery
- DOM스크립팅과 Ajax 복잡성을 쉽게 다루기 위해 만듬
- 소스의 단순화, 다양한 플러그인, 타 프레임웍보다 빠름
- 웹표준을 지킴(따로 구버전,신버전 처리 따로 안해도 됨)
- https://developers.google.com/speed/libraries/#jquery
- 제일 간단하게 사용하는 법 : script에 jquery 사용 선언
< script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
- $function(){} : onload 와 같다. 리소스 로드 전 호출
선택자
- 기본세렉터
- $() : 팩토리함수. jquery 객체를 생성할 때 사용
- 자식태그는 부모 태그 바로 아래에 있는 태그. 자손태그는 부모 태그 바로 아래모든 태그
Selector|설명 ——-|——- E|태그명이 E인 모든 엘리먼트 E F|E의 자손이면서 태그명이 F인 모든 엘리먼트 E > F|E의 바로 아래 자식이면서 바로 다음에 나오는 엘리먼트 E + F|E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트F E ~ F|E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F E . C 태그명이 E인 모든 엘리먼트 중 클래스명이 C인 엘리먼트
| Selector | 설명 |
|---|---|
| E[A=V] | 값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E |
| E[A^=V] | 값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 |
| E[A$=V] | 값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 |
| E[A*=V] | 값에 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 |
- 고급 셀렉터
| Selector | 설명 |
|---|---|
| :first | 첫번째 엘리먼트 |
| :last | 마지막 엘리먼트 |
| :first-child | 첫번째 자식 엘리먼트 |
| :last-child | 마지막 자식 엘리먼트 |
| :nth-child(n) | n번째 자식 엘리먼트 |
| :nth-child(even or odd) | 짝수 또는 홀수 자식 엘리먼트 |
| :even | 짝수 엘리먼트 |
| :odd | 홀수 엘리먼트 |
jquery 예제
- 클래스 selected-plays의 자손인데 엘리먼트가 li인 것만 ‘horizontal’ 스타일 적용
$('#selected-plays>li').addClass('horizontal');
- horizontal class가 아닌 li엘레멘트에 ‘sub-level’ 스타일 적용
$('li:not(.horizontal)').addClass('sub-level');
- 주소값(속성 href)이 pdf로 끝나는 a 엘레먼트에 ‘pdflink’ 스타일 적용
$('a[href $=pdf]').addClass('pdflink');
- 주소값(속성 href)이 mailto로시작하는 a엘레먼트에 ‘mailto’ 스타일 적용
$('a[href ^=mailto]').addClass('mailto');
- 주소값에 mailto를 포함하는 모든 a 엘레먼트에 ‘mailto’ 스타일 적용
$('a[href *= henry]:not(.mailto)').addClass('henrylink');
- tr 엘레먼트에서 홀수번째에 있는 요소는 ‘alt’ 스타일 적용
- odd는 홀수에 적용하지만 인덱스가 0부터 시작하므로 1번째 인덱스부터 홀수로 적용
$('tr:odd').addClass('alt'); // 홀수지만 짝수번 부터 시작됨(인덱스 0부터이므로)
- 첫번째 요소를 홀수로 치고 싶다면 nth-child(odd)를 사용한다
$('tr:nth-child(odd)').addClass('alt'); //nth는 홀수
- 필터에 명시한 엘레먼트 적용 (‘tr:odd’와 같다)
$('tr').filter(':odd').addClass('alt');
- 테이블에서 Henry값을 가진 엘레먼트를 찾고 ‘alt’ 스타일 적용
$('td:contains(Henry)').addClass('highlight');
- ajax 예제 jquery로 수정
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<script type="text/javascript" src="httpRequest.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function startSuggest(){
var keyword = $('[name="keyword"]').val(); // name이 keyword인 태그의 값을 가져오기
var params = "keyword=" + encodeURIComponent(keyword);
sendRequest("suggest.jsp", params, displayResult, "POST");
}
function displayResult(){
if(httpRequest.readyState == 4){
if(httpRequest.status == 200){
var html="";
var result = httpRequest.responseText;
var keywardList = result.split(',');
for(var i=0;i<keywardList.length;i++){
var str = keywardList[i].trim();
html += "<a href=javascript:select('" + str + "')>" + str + "</a>
";
}
$('#suggestList').html(html);
show('suggest');
}
}
}
function show(elementId){
$('#'+elementId).css('display', '');
}
function select(selectKeyward){
$('[name="keyword"]').val(selectKeyward);
hide('suggest');
}
function hide(elementId){
$('#'+elementId).css('display', '');
}
</script>
</head>
<body>
<form name="search" onkeyup="startSuggest()">
<input type="text" name="keyword">
<input type="button" value="전송">
</form>
<div id="suggest" style="position: absolute; left: 10px">
<div id="suggestList"></div>
</div>
</body>
</html>
JavaScript dom
2018-12-13 00:00:00 +0000브라우저 관련 객체
- 웹 브라우저와 관련된 객체 집합
- Window 객체 : 인터넷창과 관련된 객체 정보
- Screen 객체 : 운영체제 화면의 속성을 갖는 객체
- Location 객체 : 웹브라우저의 주소 표시줄과 관려된 객체, 페이지 이동 시 많이 사용됨
- Navigator 객체 : 웹 페이지를 실행하고 있는 브라우저에 대한 정보
- window는 최상위 객체이므로 window 안붙이고 사용할 수 있다(ex. window.alert() 함수)
- open(URL, 이 인터넷창의 이름(통신할 때 필요), 윈도우 옵션)
- open : 새로운 window 객체를 생성. 새로운 인터넷 브라우저 창이 열린다
- exam.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function winOpen(){
window.open('address.html', '주소검색', 'width=200,height=200'); // 자식윈도우 생성
}
</script>
</head>
<body>
<form name="fmt">
주소:<input type='text' name='addr'>
<input type="button" value="주소검색" onclick="winOpen()">
</form>
</body>
</html>
- address.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function(){ // html을 다 읽고 난 후에
var links = document.getElementsByTagName('a'); // getElementsByTagName : 배열을 리턴함
for(var i=0; i<links.length; ++i){
links[i].onclick = function(){
window.opener.document.fmt.addr.value = this.innerHTML;
self.close();
}
}
}
</script>
</head>
<body>
<ul>
<li><a href="#">서울시 강남구 대치동</a></li>
<li><a href="#">서울시 금천구 가산동</a></li>
<li><a href="#">경기도 화성시 능동</a></li>
</ul>
</body>
</html>
onload이벤트 속성
- window 객체 로드가 완료되는 때 : 모든 태그가 화면에 올라갔을 때(html 다 읽었을 때)
- html 다 읽었을 때 window.onload 함수 호출
- 아래 예제 실행 시 자바스크립트->body부분->onload 순으로 호출 되는 것을 알 수 있다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
window.onload = function(){
alert('Process-event');
}
alert('Process-0')
</script>
</head>
<body>
<h1>Process-1</h1>
<script>alert('process-2')</script>
<h2>Process-2</h2>
<script>alert('process-3')</script>
</body>
</html>
DOM
- Document Object Model
- 객체지향 모델로써 구조화된 문서를 표현하는 방식
- set, getAttribute : 속성값으로 설정, 찾기
- innerHTML : 노드의 body에 설정된 값(비표준)
- 아래예제는 set,getAttribute로 object에 접근해서 값을 변경해준다
- nodetype 1은 element 2는attribute 태그의 속성 3은 TEXT이다
- gallary02.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<link rel="stylesheet" href="styles/layout.css" target="text/css">
<script type="text/javascript" src="scripts/showPic.js"></script>
</script>
</head>
<body>
<h1>gallery</h1>
<ul id="imagegallery">
<li>
<a href="images/fireworks.jpg" title="A fireworks dispaly" >
<img src="images/thumbnail_fireworks.jpg" alt="Firewokrs"></img></a>
</li>
<li>
<a href="images/coffee.jpg" title="A cup of black coffee" >
<img src="images/thumbnail_coffee.jpg" alt="Coffee"></img></a>
</li>
<li>
<a href="images/rose.jpg" title="A red red rose">
<img src="images/thumbnail_rose.jpg" alt="Rose"></img></a>
</li>
<li>
<a href="images/bigben.jpg" title="The famous clock">
<img src="images/thumbnail_bigben.jpg" alt="Big Ben"></img></a>
</li>
</ul>
<img id="placeholder" src="images/placeholder.gif" alt="myImage"/>
<p id="description">Choose an image</p>
</body>
</html>
- showPic.js
function showPic(object){
console.out('were');
// 이미지 id가져오기
var clickhref = object.getAttribute('href');
var placeholder = document.getElementById('placeholder');
placeholder.setAttribute('src', clickhref);
// object의 title을 바꿔야 한다
// obj 어트리뷰트 가져오기
var title = object.getAttribute('title');
// image의 정보 가져오기
var image_info = document.getElementById('description');
// innerhtml바꾸기
//image_info.innerHTML = title;
if(image_info.firstChild.nodeType == 3){//TEXT는 NODETYPE이 3번
image_info.firstChild.nodeValue = title;
}
return false;
}
function prepareGallery(){
var imagegallery = document.getElementById("imagegallery");
var atag = imagegallery.getElementsByTagName('a');
for(var i = 0; i < atag.length; ++i){
atag[i].onclick = function(){
return showPic(this);
}
}
}
window.onload = prepareGallery;
레벨로 객체찾기
- nodeType1은 엘레먼트, nodeType2는 속성, nodeType3은 textnode이다
- nodeType이 3이라면 innerHTML처럼 text를 가르키는 것이다
- innerHTML은 표준이 아니므로 nodeType을 체크해서 text을 바꾸도록 한다
window.onload = function(){
var id1 = document.getElementById('id1');
var id2 = document.getElementById('id2');
if(id1.firstChild.nodeType == 3)
id1.firstChild.nodeValue = '안녕';
if(id2.firstChild.nodeType == 3)
id2.firstChild.nodeValue = '세상';
}
JavaScript ajax
2018-12-13 00:00:00 +0000ajax
- Asynchronous Javascript And XML
- 페이지의 리로딩을 하지 않고 서버로부터 응답을 처리
- 비동기식 프로그램
- 동기식은 요청->응답->다음 요청->다음요청 응답 처럼 순서대로 처리되고 응답올 때까지 아무것도 못함
- 비동기식은 요청을 보내고 바로 다른일을 할 수 있음
- ex. 서울시에 있는 카테고리 누르면 바로 옆에 서울시 전체가 나옴
- ex. 검색창에 글자 하나를 치면 연관검색어가 나옴, 댓글..
ajax 이벤트 순서
- 이벤트 발생(콜백함수 지정)
- 응답 객체 생성
- 서버에서 데이터 처리
- 받은 데이터를 화면에 출력해준다
Ajax-JSP 예제
- 입력창에 이름을 입력하고 버튼을 누르면 ‘안녕하세요. <이름> 회원님!!!' 값으로 서버로 부터 받는다이름>
- 버튼을 누르면 hello() 함수를 호출한다. hello 함수에서 name입력창의 값을 서버로 전달한다
- 결과값을 받으면 helloResult() 함수(callback)에서 처리한다
- hello.jsp
<%@ page language="java" contentType="text/plain; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
%>
안녕하세요. <%= name %> 회원님!!!
- helloApp.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="httpRequest.js"></script>
<script type="text/javascript">
function hello(){
var params = "name=" +
encodeURIComponent(document.fmt.name.value); // 한글이면 인코딩이 깨지기 때문에 encoding 함수 호출
sendRequest("hello.jsp", params, helloResult, "GET");
}
function helloResult(){
// 데이터가 다 도착했다
if(4 == httpRequest.readyState){
//정상적인 값인지 체크
if(200 == httpRequest.status){
alert('서버응답:'+httpRequest.responseText); // XML일 때는 responseXML
}
}
}
</script>
</head>
<body>
<form name="fmt">
<input type="text" name="name"/>
<input type="button" value="전송" onclick="hello()"/>
</form>
</body>
</html>
Ajax자동완성 예제
- suggestclient.html
- encodeURIComponent : 한글은 깨질 위험이 있다 그러므로 인코딩해줘야 한다. 기본은 utf-8 인코딩
- 한글 => D%95%98%EC 이런식으로 바뀐다
- 패킷은 한번에 올 수도 있지만 나눠서 올 수도 있다. httpRequest.readyState가 4라면 패킷을 모두 받은 것이다
- httpRequest.status가 200이라면 패킷에 에러가 없이 성공적으로 받았다는 뜻이다
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<script type="text/javascript" src="httpRequest.js"></script>
<script type="text/javascript">
function startSuggest(){
var keyword = document.search.keyword.value;
var params = "keyword=" + encodeURIComponent(keyword);
sendRequest("suggest.jsp", params, displayResult, "POST");
}
function displayResult(){
if(httpRequest.readyState == 4){
if(httpRequest.status == 200){
var html="";
var result = httpRequest.responseText;
var keywardList = result.split(',');
for(var i=0;i<keywardList.length;i++){
var str = keywardList[i].trim();
html += "<a href=javascript:select('" + str + "')>" + str + "</a>
";
}
var suggestList = document.getElementById("suggestList");
suggestList.innerHTML = html;
show('suggest');
}
}
}
function show(elementId){
var element = document.getElementById(elementId);
if(element){
element.style.display="";
}
}
function select(selectKeyward){
document.search.keyword.value = selectKeyward;
hide('suggest');
}
function hide(elementId){
var element = document.getElementById(elementId);
if(element){
element.style.display="none";
}
}
</script>
</head>
<body>
<form name="search" onkeyup="startSuggest()">
<input type="text" name="keyword">
<input type="button" value="전송">
</form>
<div id="suggest" style="position: absolute; left: 10px">
<div id="suggestList"></div>
</div>
</body>
</html>
- suggest.jsp
<%@page import="net.sf.json.JSONArray"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Collections"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%!
String[] keywords ={
"Ajax", "Ajax마스터", "Ajax교재",
"자바", "자바박사", "자바강사", "자바서버페이지"
};
public List search(String keyword){
if(keyword == null || keyword.equals("")){
return Collections.EMPTY_LIST;
}
List result = new ArrayList();
for(int i=0;i<keywords.length;i++){
if(keywords[i].startsWith(keyword)){//첫글자가 문자안에 있는지 체크하고 array안에 넣는다
result.add(keywords[i].trim());
}
}
return result;
}
%>
<%
request.setCharacterEncoding("utf-8");
String keyword = request.getParameter("keyword");
List keywordList = search(keyword);
// for(int i=0;i<keywordList.size();i++){
// out.print((String)keywordList.get(i));
// if(i<keywordList.size()-1){
// out.print(",");
// }
// }
/* List list = new ArrayList();
list.add(new Member("홍길동", "서울"));
list.add(new Member("박길동", "부산"));
list.add(new Member("조길동", "대구"));
*/
String json = JSONArray.fromObject(keywordList).toString();
out.print(json);
%>
JavaScript 이벤트2
2018-12-12 00:00:00 +0000이벤트
- 키보드, 마우스를 이용해서 입력을 받으면 어떤 이벤트가 발생하는 것을 의미
- 아래 예제는 window 객체에 onload속성에 함수를 할당하고 있다(=이벤트 연결)
<script type="text/javascript">
window.onload = function(){
console.log('window onload');
};
</script>
인라인 이벤트
- html 소스코드 안에 이벤트를 정의하는 것
- html와 javascript는 따로 있어야함. 인라인 이벤트는 사용x
function doProcess(){
var result = document.getElementById("result");
result.innerHTML = "<span>이벤트 결과</span>";
}
</script>
</head>
<body>
<input type="button" value="버튼1" onclick="doProcess()">
<input type="button" value="버튼2">
<div id="result"></div>
고전 이벤트
- javascript에서 이벤트를 추가하는 방식
- onload 함수는 dom이 완성된 후 호출됨(html을 다 읽고나서)
- 보통 javascript 파일을 만들고 안에서 처리한다
- javascript 링크를 잘 걸었는지 확인하는 법 ctrl+위에 마우스 대면 손가락 모양으로 바뀜. 잘못하면 안바뀜
- this를 사용하면 이벤트를 호출한 객체를 알 수 있다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type='text/javascript'>
window.onload = function(){
//변수 선언
var event = document.getElementById('clickButton');
// 이벤트 연결
event.onclick = function(){
alert('클릭');
};
};
</script>
</head>
<body>
<input type ="button" id="clickButton" value = "버튼">
</body>
</html>
이벤트 리스너
- 이벤트 리스너는 하나의 행동에 여러 이벤트가 일어나게 할 수 있음
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
window.onload = function(){
function clickEvent(){
alert("클릭!");
}
function updateValue(event){
this.value = '눌렀다';
}
var btn = document.getElementById("btn");
btn.addEventListener("click", clickEvent);
btn.addEventListener("click", updateValue);
}
</script>
</head>
<body>
<input type="button" id="btn" value="button"/>
</body>
</html>
디폴트 이벤트 제거
- 일부 HTML 태그는 이미 이벤트 리스너 존재
- 기본 이벤트 방식이 마음에 안들어 제거하고 싶을 때 사용
- 이벤트 리스너에서 false 리턴 시 제거
이벤트 버블링
- 이벤트 버블링은 자식->부모로 이벤트가 흘러감
- 캡쳐링은 반대로 부모->자식 순으로 이벤트가 실행됨(익스플로, jquery 캡쳐링 지원x)
- 아래 예제 실행 시 Paragraph 만 클릭해도 모든 이벤트가 실행됨
- 이벤트 버블링을 막는 방법은 event인자의 cancelBubble을 true로 주고 event의 stopPropagation()함수를 호출하는 것
- 이벤트 버블링 수정 전(부모 이벤트까지 호출)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
*{border:3px solid black;}
</style>
<script>
</script>
</head>
<body>
<div onClick="alert('outer-div')">
<h1 onclick="alert('header')">
<p onclick="alert('paragraph')">Paragraph</p>
</h1>
</div>
</body>
</html>
- 이벤트 버블링 수정 후(자신의 이벤트만 호출)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
*{border:3px solid black;}
</style>
<script>
var paragraph_func = function paragraphfunc(e){
var event = e || window.event;
// 이벤트 발생을 알립니다
alert('paragraph');
// 이벤트 전달을 제거합니다
event.cancelBubble = true;
if(event.stopPropagation){
event.stopPropagation();
}
}
var header_func = function headerfunc(e){
var event = e || window.event;
// 이벤트 발생을 알립니다
alert('header');
// 이벤트 전달을 제거합니다
event.cancelBubble = true;
if(event.stopPropagation){
event.stopPropagation();
}
}
</script>
</head>
<body>
<div onClick="alert('outer-div')">
<h1 onclick='header_func(event);'>
<p onclick='paragraph_func(event);'>Paragraph</p>
</h1>
</div>
</body>
</html>
표준 이벤트 모델
- 구형 웹브라우저에서는 이벤트 리스너가 동작하지 않는다
- 어느 웹브라우저라도 동일한 동작을 하게 만들어줘야 한다
- 최신 웹브라우저는 그냥 event를 사용하고 구형 웹브라우저는 window.event를 사용한다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
window.onload = function(){
var header = document.getElementById('my-header');
if(header.attachEvent){ // 구형 버전은 attach. 존재한다면 구형이란 뜻. 신형은 eventListener
// 인터넷 익스플로러의 경우 실행
var hanndler = function(){
window.event.srcElement.style.color = 'red';
window.event.srcElement.detachEvent('onClick', handler);
};
header.attachEvent('onClick', handler);
}else {
// 그 이외의 브라우저에 실행합니다
var handler = function(){
this.style.color = 'red';
this.removeEventListener('click', handler);
};
header.addEventListener('click', handler);
}
}
</script>
</head>
<body>
<h1 id = "my-header">Click</h1>
</body>
</html>
JavaScript 캡슐화
2018-12-12 00:00:00 +0000캡슐화
- function 밖에서 일반 인자에 직접 접근이 가능하다
- 인자에 직접 접근하지 못하게 만들려면 this를 뺀다
- 멤버변수에는 this를 빼고, 함수에서 this를 붙여준다
- 캡슐화 후 멤버변수 값을 가져오지 못하는 것을 확인할 수 있다
// 생성자 함수
function Student(n){
this.stname = n;
this.getstName = function(){return this.stname;}
this.setstName = function(n){ this.stname = n;};
}
var st = new Student("강하나");
alert(st.getstName());
alert(st.stname);
- 캡슐화 후
// 생성자 함수
function Student(n){
var stname;
// getstName, setstName함수에서
// this.stname를 쓰면 stname을 찾을 수 없다
// 왜냐하면 생성자는 객체가 아니기 때문에
// this.stname을하면 window의 멤버변수(전역변수) stname을 찾는 것이다
// 결론 : stname은 생성자의 지역변수이므로 this를 뺀다
this.getstName = function(){return name;}
this.setstName = function(n){ name = n;};
}
var st = new Student("강하나");
alert(Student.getstName());
alert(Student.stname);
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS