반응형

# 카카오 api 사용방법

## 카카오 개발자 가입

  • 카카오 개발자 사이트 ( https://developers.kakao.com/ ) 접속 후 가입
  • 애플리케이션 추가 클릭 후 앱 이름, 회사 이름(개인의 경우 본인 이름 등 입력) 후 저장
  • 생성된 애플리케이션 클릭하여 api 키 획득
 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

## 카카오맵(지도/로컬)

### 지도 사용

  • 상단 제품 탭 클릭 후 지도/로컬 클릭 > 문서보기 클릭 후 하단 지도 SDK의  '해당 가이드' 클릭
  • 자바스크립트 개발 가이드 클릭 후 가이드에 맞게 진행
  • 또는 왼쪽 메뉴 중 wizard 클릭 후 기본적인 카카오맵 틀을 원하는 크기 등으로 지정 후 하단에 생성된 코드 복사하여 html 문서(or .jsp)에 입력하여 사용하면 된다. (사용 시 복사 한 코드 내에 위에서 애플리케이션 등록 후 발급받은 key를 추가하여 사용하면 된다.)
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>다음 지도 API</title>
</head>
<body>
	<div id="map" style="width:750px;height:350px;"></div>

	<script src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은 APP KEY를 사용하세요"></script>
	<script>
		var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
		    mapOption = {
		        center: new kakao.maps.LatLng(37.56682, 126.97865), // 지도의 중심좌표
		        level: 3, // 지도의 확대 레벨
		        mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
		    }; 

		// 지도를 생성한다 
		var map = new kakao.maps.Map(mapContainer, mapOption); 

	</script>
</body>
</html>

### 지도에 마커 추가

  • 지도에 마커 입력 하기 위해 구글 지도에서 원하는 지점 우클릭 후 '이곳이 궁금한가요' 클릭하면 해당 지역에 대한 좌표 정보를 얻을 수 있다.
  • 1~2개의 적은 마크 생성 코드 (아래)
// 마커 1개의 경우
// 지도에 마커를 생성하고 표시한다.
var marker = new kakao.maps.Marker({
  position: new kakao.maps.LatLng(36.511513, 127.258927), // 마커의 좌표
  map: map // 마커를 표시할 지도 객체
});

var iwContent = '<div style="padding:5px;">도램마을 8단지</div>', // 인포윈도우에 표출될 내용으로 HTML 문자열이나 document element가 가능합니다
iwPosition = new kakao.maps.LatLng(36.511513, 127.258927), //인포윈도우 표시 위치입니다
iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

// 인포윈도우를 생성하고 지도에 표시합니다
var infowindow = new kakao.maps.InfoWindow({
  map: map, // 인포윈도우가 표시될 지도
  position : iwPosition, 
  content : iwContent,
  removable : iwRemoveable
});


// 마커2 이상의 경우
// 지도에 마커를 생성하고 표시한다.
var marker2 = new kakao.maps.Marker({
  position: new kakao.maps.LatLng(36.514043, 127.263682), // 마커의 좌표
  map: map // 마커를 표시할 지도 객체
});

var iwContent2 = '<div style="padding:5px;">도담 고등학교</div>', // 인포윈도우에 표출될 내용으로 HTML 문자열이나 document element가 가능합니다
iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

// 인포윈도우를 생성하고 지도에 표시합니다
var infowindow2 = new kakao.maps.InfoWindow({
  map: map, // 인포윈도우가 표시될 지도
  position : iwPosition, 
  content : iwContent2,
  removable : iwRemoveable
});

// 마커 위에 인포윈도우를 표시
infowindow.open(map, marker2);
  • 다수의 마커 생성하는 코드(아래)
// 다중 마커 생성
var 데이터 = [
  [36.511513, 127.258927, '<div style="padding:5px;">도램마을 8단지</div>'],
  [36.514043, 127.263682, '<div style="padding:5px;">도담 고등학교</div>'],
  [36.514494, 127.254835, '<div style="padding:5px;">늘봄 초등학교</div>'],
  [36.511590, 127.262530, '<div style="padding:5px;">도담 초등학교</div>']
];

for (var i = 0; i < 데이터.length; i++ ) {
// 지도에 마커를 생성하고 표시한다.
var marker = new kakao.maps.Marker({
  position: new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]), // 마커의 좌표
  map: map // 마커를 표시할 지도 객체
});

iwPosition = new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]),
iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

// 인포윈도우를 생성하고 지도에 표시합니다
var infowindow = new kakao.maps.InfoWindow({
  map: map, // 인포윈도우가 표시될 지도
  position : iwPosition, 
  content : 데이터[i][2],
  removable : iwRemoveable
});

// 마커 위에 인포윈도우를 표시
infowindow.open(map, marker);
}	

 

### 마커에 내용 추가(인포 윈도우)

	var iwContent = '<div style="padding:5px;">Hello World!</div>', // 인포윈도우에 표출될 내용으로 HTML 문자열이나 document element가 가능합니다
    iwPosition = new kakao.maps.LatLng(36.511513, 127.258927), //인포윈도우 표시 위치입니다
    iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

	// 인포윈도우를 생성하고 지도에 표시합니다
	var infowindow = new kakao.maps.InfoWindow({
	    map: map, // 인포윈도우가 표시될 지도
	    position : iwPosition, 
	    content : iwContent,
	    removable : iwRemoveable
	});

	// 마커 위에 인포윈도우를 표시
	infowindow.open(map, marker);

 

### 다중 마커 숫자로 표기(마커 클러스터러)

// 키 입력 뒤에 라이브러리 입력(마커 클러스터러)
<script src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키입력&libraries=clusterer"></script>

// 마커 클러스터러를 생성합니다 
var clusterer = new kakao.maps.MarkerClusterer({
  map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
  averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
  minLevel: 6 // 클러스터 할 최소 지도 레벨 
});
  
// 마커들을 저장할 변수 생성(마커 클러스터러 관련)
var markers = [];
for (var i = 0; i < 데이터.length; i++ ) {
    // 지도에 마커를 생성하고 표시한다.
    var marker = new kakao.maps.Marker({
      position: new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]), // 마커의 좌표
      map: map // 마커를 표시할 지도 객체
  	});

    iwPosition = new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]),
    iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

    // 인포윈도우를 생성하고 지도에 표시합니다
    var infowindow = new kakao.maps.InfoWindow({
      map: map, // 인포윈도우가 표시될 지도
      position : iwPosition, 
      content : 데이터[i][2],
      removable : iwRemoveable
    });

    // 마커 위에 인포윈도우를 표시
    infowindow.open(map, marker);

    // 생성된 마커를 마커 저장하는 변수에 넣음(마커 클러스터러 관련)
 	markers.push(marker);
}	

// 클러스터러에 마커들을 추가합니다(마커 클러스터러 관련)
clusterer.addMarkers(markers);
<div class="con" id="map" style="width:100%; height:100vh;"></div>

<script src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키입력&libraries=clusterer"></script>
<script>
	var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
    mapOption = {
        center: new kakao.maps.LatLng(36.49334, 127.27856), // 지도의 중심좌표
        level: 6, // 지도의 확대 레벨
        mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
    }; 
    
	// 지도를 생성한다 
	var map = new kakao.maps.Map(mapContainer, mapOption); 

	// 마커 클러스터러를 생성합니다 
    var clusterer = new kakao.maps.MarkerClusterer({
        map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
        averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
        minLevel: 6 // 클러스터 할 최소 지도 레벨 
    });
    
	// 지도 타입 변경 컨트롤을 생성한다
	var mapTypeControl = new kakao.maps.MapTypeControl();

	// 지도의 상단 우측에 지도 타입 변경 컨트롤을 추가한다
	map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT);	

	// 지도에 확대 축소 컨트롤을 생성한다
	var zoomControl = new kakao.maps.ZoomControl();

	// 지도의 우측에 확대 축소 컨트롤을 추가한다
	map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);

	// 다중 마커 생성
	var 데이터 = [
		[36.511513, 127.258927, '<div style="padding:5px;">도램마을 8단지</div>'],
		[36.514043, 127.263682, '<div style="padding:5px;">도담 고등학교</div>'],
		[36.514494, 127.254835, '<div style="padding:5px;">늘봄 초등학교</div>'],
		[36.511590, 127.262530, '<div style="padding:5px;">도담 초등학교</div>']
	];

	// 마커들을 저장할 변수 생성
	var markers = [];
	for (var i = 0; i < 데이터.length; i++ ) {
		// 지도에 마커를 생성하고 표시한다.
		var marker = new kakao.maps.Marker({
			position: new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]), // 마커의 좌표
			map: map // 마커를 표시할 지도 객체
		});

		iwPosition = new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]),
	    iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

		// 인포윈도우를 생성하고 지도에 표시합니다
		var infowindow = new kakao.maps.InfoWindow({
		    map: map, // 인포윈도우가 표시될 지도
		    position : iwPosition, 
		    content : 데이터[i][2],
		    removable : iwRemoveable
		});

		// 마커 위에 인포윈도우를 표시
		infowindow.open(map, marker);
		// 생성된 마커를 마커 저장하는 변수에 넣음
		markers.push(marker);
	}	

	// 클러스터러에 마커들을 추가합니다
    clusterer.addMarkers(markers);
</script>

 

### 다중 마커 클러스터러 진행 시 텍스트 겹치는 현상 방지

  • 마우스를 올려놓아야지만 인포 윈도우 표시될 수 있도록 변경
  • https://apis.map.kakao.com/web/sample/ 에서 제공해주는 기능 중 여러개 마커에 이벤트 등록하기1 클릭 후 코드 복사하여 사용
// 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다
// 이벤트 리스너로는 클로저를 만들어 등록합니다 
// for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다
kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
        
        
// 인포윈도우를 표시하는 클로저를 만드는 함수입니다 
function makeOverListener(map, marker, infowindow) {
	return function() {
		infowindow.open(map, marker);
	};
}

// 인포윈도우를 닫는 클로저를 만드는 함수입니다 
function makeOutListener(infowindow) {
  return function() {
  	infowindow.close();
  };
}
<div class="con" id="map" style="width:100%; height:100vh;"></div>

<script src="//dapi.kakao.com/v2/maps/sdk.js?appkey=키 값 입력&libraries=clusterer"></script>
<script>
	var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
    mapOption = {
        center: new kakao.maps.LatLng(36.49334, 127.27856), // 지도의 중심좌표
        level: 6, // 지도의 확대 레벨
        mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
    }; 
    
	// 지도를 생성한다 
	var map = new kakao.maps.Map(mapContainer, mapOption); 

	// 마커 클러스터러를 생성합니다 
    var clusterer = new kakao.maps.MarkerClusterer({
        map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
        averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
        minLevel: 6 // 클러스터 할 최소 지도 레벨 
    });
    
	// 지도 타입 변경 컨트롤을 생성한다
	var mapTypeControl = new kakao.maps.MapTypeControl();

	// 지도의 상단 우측에 지도 타입 변경 컨트롤을 추가한다
	map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT);	

	// 지도에 확대 축소 컨트롤을 생성한다
	var zoomControl = new kakao.maps.ZoomControl();

	// 지도의 우측에 확대 축소 컨트롤을 추가한다
	map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);

	// 다중 마커 생성
	var 데이터 = [
		[36.511513, 127.258927, '<div style="padding:5px;">도램마을 8단지</div>'],
		[36.514043, 127.263682, '<div style="padding:5px;">도담 고등학교</div>'],
		[36.514494, 127.254835, '<div style="padding:5px;">늘봄 초등학교</div>'],
		[36.511590, 127.262530, '<div style="padding:5px;">도담 초등학교</div>']
	];

	// 마커들을 저장할 변수 생성
	var markers = [];
	for (var i = 0; i < 데이터.length; i++ ) {
		// 지도에 마커를 생성하고 표시한다.
		var marker = new kakao.maps.Marker({
			position: new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]), // 마커의 좌표
			map: map // 마커를 표시할 지도 객체
		});

		iwPosition = new kakao.maps.LatLng(데이터[i][0], 데이터[i][1]),
	    iwRemoveable = true; // removeable 속성을 ture 로 설정하면 인포윈도우를 닫을 수 있는 x버튼이 표시됩니다

		// 인포윈도우를 생성하고 지도에 표시합니다
		var infowindow = new kakao.maps.InfoWindow({
		    map: map, // 인포윈도우가 표시될 지도
		    position : iwPosition, 
		    content : 데이터[i][2],
		    removable : iwRemoveable
		});

		// 생성된 마커를 마커 저장하는 변수에 넣음
		markers.push(marker);

	 	// 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다
	    // 이벤트 리스너로는 클로저를 만들어 등록합니다 
	    // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다
	    kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
	    kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
	}	

	// 클러스터러에 마커들을 추가합니다
    clusterer.addMarkers(markers);
	
 	// 인포윈도우를 표시하는 클로저를 만드는 함수입니다 
    function makeOverListener(map, marker, infowindow) {
        return function() {
            infowindow.open(map, marker);
        };
    }

    // 인포윈도우를 닫는 클로저를 만드는 함수입니다 
    function makeOutListener(infowindow) {
        return function() {
            infowindow.close();
        };
    }
</script>

 

반응형

'기타' 카테고리의 다른 글

깃허브(github)에 이미지 올리기  (0) 2020.08.25
엑셀 데이터 MySQL에 등록하기  (0) 2020.08.21
챗봇이란?  (0) 2020.08.17
프레임워크, 프로그래밍 언어, 라이브러리  (0) 2020.08.17
사이트 방문자 수 측정하기  (0) 2020.08.15
반응형

 # 챗봇

  • 텍스트 또는 음성으로 사용자와 대화를 하는 프로그램.
  • 고객상담 등에서 단순한 질문에만 응답, 어려운 건 상담사가 처리하는 등의 협업으로 진행.
  • 챗봇 구현을 위해서는 의도와 개체가 가장 중요하다.
  • 문장의 의도가 무엇인지 파악, 문장 안 핵심 개체 추출 후 이를 바탕으로 해당 작업을 프로그램으로 수행, 답변
  • 지금까지 규칙기반 방식 대부분, 점점 딥러닝을 도입하는 추세이다.
반응형
반응형

1. 프레임워크

## 스프링 프레임워크 (Spring Framework)

  • 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 스프링(Spring)라고도 한다.
  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
  • 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

### 스프링 프레임워크 - 스프링 부트 (Spring Boot) 프로젝트

  • 스프링 부트란 스프링 프레임워크의 프로젝트를 의미, 이를 사용하여 쉽게 애플리케이션을 만들 수 있다.
  • 스프링을 쉽게 사용할 수 있도록 미리 필요한 설정을 대부분 세팅해 놓은 것 이다.
  • 단독으로 실행 가능한 애플리케이션을 생성하고, 톰캣 등이 내장되어 있으며, 상용화에 필요한 통계, 상태 체크, 외부 설정 등을 제공한다. 설정을 위한 xml 코드를 생성하거나 요구하지 않는다.

 

2. 프로그래밍 언어

## 자바 (Java)

public class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Hello World 를 출력
    
    int a = 10;
    
    System.out.println(a); // 10 출력
  }
}
  • 객체 지향적 프로그래밍 언어이다.
  • 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다.
  • 자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다.

## 자바 스크립트 (JavaScript)

<!DOCTYPE html>
<html>
	<head>
    <meta charset="UTF-8">
    <title>${logoText}-${pageTitle}</title>
    	<script>
        	var name = "코딩초보";
            var age = 28;
            document.write("닉네임 : " + name + " 나이 : " + age);
        </script>
    </head>
    <body>
    </body>
</html>
  • 객체 기반 스크립트 프로그래밍 언어이다. 자바와 자바스크립트는 직접적인 관련성이 없다.
  • 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용되고 있다.

# JSP (Java Server Pages)

<%@ import="page import="com.sbs.jhs.at.util.Util"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	String str = "안녕 이게 바로 JSP"
    
    int a = 5, b = -5;
    
%>
<!DOCTYPE html>
<html>
	<head>
    <meta charset="UTF-8">
    <title>${logoText}-${pageTitle}</title>
    </head>
    <body>
      <%
		out.print(str + " a + b 합 : " + a + b);
      %>
    </body>
</html>
  • 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술.
  • 서블릿 이용 시 웹프로그래밍을 할 수 있지만, 자바에 대한 지식도 필요하고, 인터페이스 구현에 너무 많은 코드를 필요로 하는 등의 비 효율적 측면이 있는데, 이러한 문제점이 있는 서블릿을 작성하지 않고 간편하게 웹 프로그래밍을 구현하게 만든 기술이다.
  • 키워드가 태그화 되어 서블릿에 비해 배우기 쉽고, 자바 코드를 <%%> 태그 안에 처리해줘야 하며, html처럼 태그를 사용하여 자바 코드도 사용이 가능하다.

## 서블릿 (Servlet)

  • 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램.
  • 클라이언트의 요청을 처리하고 결과를 다시 클라이언트에게 반환하는 서블릿 클래스의 구현 규칙을 지킨 자바 프로그램을 의미한다.Java 서버에서 움직이는 작은 프로그램으로  JSP의 기반이 되며, 서블릿은 웹 서비스를 java로 만들 때 반드시 필요하다.
  • 자바코드로 구현하고 컴파일하고 배포해야 하고, HTML태그로 문자열("")스크림으로 처리해야 하며, 코드가 수정되면 다시 컴파일 후 배포 해야 한다.

 

 

# 3. 라이브러리

## AJAX (Asynchronous Javascript And XML)

<script>
	var RecruitmentWriteForm__submitDone = false;
	function RecruitmentWriteForm__submit(form) {
		if (RecruitmentWriteForm__submitDone) {
			alert('처리중입니다.');
			return;
		}
		form.title.value = form.title.value.trim();
		if (form.title.value.length == 0) {
			form.title.focus();
			alert('제목을 입력해주세요.');
			return;
		}
		form.body.value = form.body.value.trim();
		if (form.body.value.length == 0) {
			form.body.focus();
			alert('내용을 입력해주세요.');
			return;
		}
		var startUploadFiles = function(onSuccess) {
			var needToUpload = form.file__recruitment__0__common__attachment__1.value.length > 0;
			if (!needToUpload) {
				needToUpload = form.file__recruitment__0__common__attachment__2.value.length > 0;
			}
			if (!needToUpload) {
				needToUpload = form.file__recruitment__0__common__attachment__3.value.length > 0;
			}
			if (needToUpload == false) {
				onSuccess();
				return;
			}
			var fileUploadFormData = new FormData(form);
			$.ajax({
				url : './../file/doUploadAjax',
				data : fileUploadFormData,
				processData : false,
				contentType : false,
				dataType : "json",
				type : 'POST',
				success : onSuccess
			});
		}
		RecruitmentWriteForm__submitDone = true;
		startUploadFiles(function(data) {
			var fileIdsStr = '';
			if (data && data.body && data.body.fileIdsStr) {
				fileIdsStr = data.body.fileIdsStr;
			}
			form.fileIdsStr.value = fileIdsStr;
			form.file__recruitment__0__common__attachment__1.value = '';
			form.file__recruitment__0__common__attachment__2.value = '';
			form.submit();
		});
	}
</script>
  • 비동기 통신을 위한 기술들 간의 연계(묶음)을 의미 (자바스크립트 그리고 XML) 
  • AJAX의 경우 필요한 데이터만 웹 서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다.
  • 보통 SOAP, XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 에서는 자바스크립트를 사용한다.
  • 페이지 이동없이 고속으로 화면 전환이 가능하다.
  • 서버 처리를 기다리지 않고, 비동기 요청이 가능하다.
  • 수신 데이터의 양을 줄일 수 있고, 클라이언트에게 처리를 위임할 수 있다.

## 제이쿼리 (jQuery)

## 제이쿼리 사용 시 필수 입력
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

## 그외 사용 관련 예시
$("div.test").add("p.quote").addClass("blue").slideDown("slow");

$.ajax({
  type: "POST",
  url: "some.php",
  data: "name=John&location=Boston",
  success: function(msg){
    alert( "Data Saved: " + msg );
  }
});
  •  HTML의 클라이언트 사이드 조작을 단순화 하도록 설계된 크로스 플랫폼의 자바스크립트 라이브러리다.
  • 오늘날 가장 인기있는 자바스크립트 라이브러리 중 하나이다.
  • 제이쿼리의 문법은 코드 보기, 문서 객체 모델 찾기, 애니메이션 만들기, 이벤트 제어, Ajax 개발을 쉽게 할 수 있도록 디자인되었으며 개발자가 플러그인을 개발할 수 있는 기능을 제공한다.

## 자바서버 페이지 표준 태그 라이브러리 (JSTL : JavaServer Pages Standard Tag Library)

## JSTL 사용을 위한 필수
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

## JSTL 데이터 포맷
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

## JSTL 태그 라이브러리 중 하나로 JSTL의 choose ~ when ~ otherwise문(=자바 if~else 문)사용 시 입력
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

## 변수 선언
<c:set var="변수이름" value="값"/>


## if문
<c:if test="${isLogined}">
</c:if>

- ${변수} 가 참이면 실행 된다.
- ${변수 == true} , ${변수 eq true} 로 입력 가능하다.
- ${변수 != true} , $[변수 ne true] 로 입력 가능하다.


## 반복문
<c:forEach var="변수이름" items="반복할 객체명" begin="시작값" end="마지막값" step="증가값" varStatus="반복상태 변수명">

- forEach 태그에는 꼭 입력해야 하는 속성 : items, var
- items 속성 : 반복할 값들이 있는 배열과 리스트명
- var 속성 : forEach문 안에서 사용할 배열의 변수명
- varStatus 속성 : 인덱스를 사용할 수 있는 변수명

- 예제) 단순히 i를 1 ~ 100까지 반복 후 출력
<c:forEach var="i" begin="1" end="100" step="1">
	${i}
</c:forEach>
  •  Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다.
  • JSTL은 XML 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한 JSP 태그 라이브러리를 추가 JSP를 확장했다.
  • JSTL은 JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공한다.
  • 표준화된 태그 셋을 사용, 자바 코드가 들락거리는 것보다 더 코드의 유지보수와 응용 소프트웨어 코드와 사용자 인터페이스 간의 관심사의 분리로 이어지게 한다.

 

## 출처 

  • 위키백과
  • 구글
반응형
반응형

# 사이트 방문자 수 측정 

## 방법 1 (Application 객체 사용)

단, 새로고침 진행 시 꾸준히 늘어남...

<%@ page contentType="text/html;charset=euc-kr" session="true"%>
<%
    if (application.getAttribute("Counter") != null) {
    
        String strCounter = String.valueOf(application.getAttribute("Counter"));
        int counter = Integer.parseInt(strCounter) + 1;
        application.setAttribute("Counter", counter);
        
    } else {
    
        application.setAttribute("Counter", 1);
        
    }
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
    방문자 수 : <%=application.getAttribute("Counter")%>
</BODY> 
   </HTML>  
반응형

+ Recent posts