//Google AdSense

데이터모델링

복잡한 현실 세계에 존재하는 데이터를 단순화 시켜 표현해 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정

데이터 모델링 특성
추상화(Abstraction) 단순화(Simple) 명확성(Clarity)
현실세계를 간략하게 표현 누구나 쉽게 이해할 수 있도록 표현

명확하게 의미가 해석되어야 하고

한 가지 의미를 가져야 함.

 

현실 세계  개념적 구조 논리적 구조

개념적 데이터 모델

논리적 데이터 모델

사람의 머리로 이해할 수 있도록
현실 세계를 개념적인 형태로 모델링하여
데이터베이스의 개념적 구조로 표현하는 도구

개념적 구조를 논리적 형태로 모델링하여
데이터베이스의 논리적 구조로 표현하는 도구

데이터 모델링 (개체-관계 모델)

관계 (relationship)

  • 개체와 개체가 맺고 있는 의미 있는 연관성
  • 개체 집합들 사이의 대응관계, 즉 매핑(mapping)을 의미
  • 예) 고객 개체와 상품 개체 간의 구매 관계 > "고객은 상품을 구매한다."

관계의 유형

  • 일대일 (1 : 1) 관계
  • 일대다 (1 : N) 관계
  • 다대다 (N : M) 관계

E-R 다이어그램

E-R 다이어그램 도형 기호

 


관계형 데이터 모델

 

데이터 베이스의 구성

 

데이터베이스 스키마 (database schema)

  • 데이터베이스의 전체 구조
  • 데이터베이스를 구성하는 릴레이션 스키마의 모음

데이터베이스 인스턴스 (database instance)

  • 데이터베이스를 구성하는 릴레이션 인스턴스의 모음
릴레이션의 특성
튜플의 유일성 튜플의 무순서 속성의 무순서 속성의 원자성
하나의 릴레이션에는 동일한 튜플이 존재할 수 없다. 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다. 하나의 릴레이션에서 속성사이의 순서는 무의미하다. 속성 값을 원자 값으로 사용할 수 있다.

 

릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합

 

키의 특성

유일성(uniqueness) 최소성(minimality)
데이터베이스를 구성하는 릴레이션 스키마의 모음 꼭 필요한 최소한의 속성들로만 키를 구성

 

키의 종류

기본키 (primary key) 후보키 (candidate key) 대체키 (alternate key) 슈퍼키 (super key)
후보키 중에서 기본적으로 사용하기 위해 선택한 키 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 기본키로 선택되지 못한 후보키 유일성을 만족하는 속성 또는 속성들의 집합

외래키 ( foreign key)

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 릴레이션들 간의 관계를 표현
    • 참조하는 릴레이션 : 외래키를 가진 릴레이션
    • 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션

 

제약조건

 

무결성 제약조건 (integrity constraint)

- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙

- 무결성 : 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것

개체 무결성 제약조건 (entity integrity constraint) 참조 무결성 제약조건 (referential integrity constraint)
기본키를 구성하는 모든 속성은 null 값을 가질 수 없는 규칙

외래키는 참조할 수 없는 값을 가질 수 없는 규칙

※ 외래키의 속성이 null 값을 가진다고 참조 무결성을 위반하는 것 은 아니다

 


MySQL 데이터 타입

숫자 데이터 형식

데이터 형식 바이트 수  숫자범위 설명
BIT N/8   Bit 표현
TINYINT 1 -128 ~ 127 정수
SMALLINT 2 -32,768 ~ 32,767 정수
MEDIUMINT 3 -8,388,608 ~ 3,388,607 정수
INT 4 약 -21억 ~ 21억 정수
BIGINT 8 약 -900경 ~ 900경 정수
FLOAT 4 -3.40E+38 ~ 1.79E-38 소수점 7자리
DOUBLE 8 -122E-308 ~ 1.79E+308 소수점 15자리
DECIMAL(m,[d]) 5~17 -10^38+1 ~ 10^38 -1 소수점

 

문자 데이터 형식

데이터 형식 바이트 수  설명
CHAR 1~255 고정길이 문자형
VARCHAR 1~65535 가변길이 문자형
BINARY 1~255 고정길이의 이진 데이터 값
VARMINARY 1~255 가변길이의 이진 데이터 값
TEXT 1~65535 N크기의 TEXT데이터 값
BLOB 1~65535 N크기의 BLOB 데이터 값
ENUM 1 or 2 최대 65535개의 열거형 데이터 값
SET 1, 2, 3, 4, 8 최대 64개의 서로 다른 데이터 값

한글 데이터를 BINARY로 변환하여 ORDER BY 할 수 있음

 

날짜 데이터 형식

데이터 형식 바이트 수 설명
DATE 3

날짜 : 1001-01-01~999-12-31 까지 저장

날짜형식만 사용 'YYYY-MM-DD'

 

TIME 3

시간: -838:59:59.000000~838:59:59.000000까지 저장

형식: ‘HH:MM:SS’

DATETIME 8

날짜: 1001-01-01 00:00:00~9999-12-31 23:59:59 저장

형식: ‘YYYY-MM-DD HH:MM:SS

TIMESTAMP 4

날짜: 1001-01-01 00:00:00~9999-12-31 23:59:59 저장

형식: ‘YYYY-MM-DD HH:MM:SS

Time_zone 시스템 변수와 관련 있으며 UTC 변환 저장

YEAR 1

날짜: 1901~2155까지 저장.

형식: ‘YYYY’

 

 

 

 

'Database' 카테고리의 다른 글

[Database] join  (0) 2020.03.25
[Database] SQL 활용 ②  (0) 2020.03.18
[Database] MySQL 실습  (0) 2020.03.11
[Database] MySQL 설치 / 키워드 및 실습  (0) 2020.03.11

Date 객체와 날짜 관련 메서드


문자열 객체의 메서드 및 속성




 

문서 객체 모델 style

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 style 다루기</title>
<script type="text/javascript">
	/*  
		dom style : style이라는 속성에 들어간 css 속성을 사용할 수 있다.	
	*/
</script>
</head>
<body>
	<input type = "text" name = "memberName" id = "memberName" />
	<button type = "button" id = "goStyle">스타일 주기</button>
	
	
	
	<script type="text/javascript">
		//memberName 아이디 input 박스 테두리와 색상 변경하는 토글기능
		var goStyle = document.getElementById('goStyle');
		goStyle.addEventListener('click', function() {
		    var memberName = document.getElementById('memberName');
		    // rgb(255, 0, 153) <- 핫핑크
		    console.log(memberName.style.color);
		    console.log(memberName.style.border);
		    if(memberName.style.color == 'rgb(255, 0, 153)'){
		    	memberName.style.border = '1px solid #000000';
				memberName.style.color = '#000000';
		    }else{
				memberName.style.border = '1px solid #ff0099';
				memberName.style.color = '#ff0099';
		    }
		   
		});
	</script>
	
	<br><br>
	
	<button type = "button" id = "innerBtn">html 삽입</button>
	<div id = "innerHtmlTag">
		<h1>버튼을 클릭해주세요.</h1>
	</div>
	<script type="text/javascript">
		//memberName 아이디 input 박스 테두리와 색상 변경하는 토글기능
		var innerBtn = document.getElementById('innerBtn');
		innerBtn.addEventListener('click', function() {
			var innerHtmlTag = document.getElementById('innerHtmlTag');
			console.log(innerHtmlTag.innerHTML);
			var tag = '';
			tag += '<h1 style = "color: #ff0099">안녕하세요.</h1>'
			tag += '<span>한국스마트정보교육원에 오신 것을 환영합니다.</span>'
			innerHtmlTag.innerHTML = tag;
		});
	</script>
	
	<br><br>
	
	<img src = "./resource/img/123.gif" id = "imageEvTarget">
	<button type="button" id="imageChange">이미지 바꾸기</button>
	
	<script type="text/javascript">
		var index = 0;
		var imageChange = document.getElementById('imageChange');
		imageChange.addEventListener('click', function() {
			var imageEvTarget = document.getElementById('imageEvTarget');
		    
		    if(index == 0){
		    	imageEvTarget.src = './resource/img/unnamed.jpg';
		    	index ++;
		    }else{
		    	imageEvTarget.src = './resource/img/123.gif';
		    	index = 0;
		    }
		});
	</script>
</body>
</html>

문서 객체 모델 style

문서 객체 모델 style

 


 


 


문서 객체 모델 - style 실습 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style</title>
</head>
<body id = "body">
	<!--  
		실습 1. 아래의 버튼 클릭시 body의 배경 색상을 검정 또 한번 클릭시 흰색으로 바뀌게 스크립트 코드를 작성하시오.
	-->
	<button type="button" id= "backColorChange" >배경색 변환 </button>
	
	<script type="text/javascript">
		var backColorChange = document.getElementById('backColorChange');
		var ck = 0;
		backColorChange.addEventListener('click',function() {
		    var body = document.getElementById('body');
		    
		    if(ck == 0){
		    	body.style.backgroundColor = "#000000"
		    	ck++;
		    }
		    else{
		        body.style.backgroundColor = "#ffffff"
		        ck=0;
		    }		
		});
		
	</script>
</body>
</html>

문서 객체 모델 - 생성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - 생성</title>
</head>
<body>
	<!--  
		실습 2. 아래의 버튼 클릭시 1~10까지의 행의 값을 가진 테이블을 완성시키시오.
	-->
	
	<button type="button" id="tableCreate">테이블 생성</button>
	
	<table>
		<tbody>
			<tr>
				<td>버튼을 클릭해주세요.</td>
			</tr>
		</tbody>
	</table>
	
	<script type="text/javascript">
		
		var tableCreate = document.getElementById('tableCreate');
		tableCreate.addEventListener('click', function () {
			var table = document.getElementsByTagName('table')
			var tbody = table[0].tBodies[0]
			var t = '';
			for(var i = 1; i <= 10 ; i++){
				t += '<tr><td>"+i+"</td></tr>'
			}
			tbody.innerHTML = t;

		})
	</script>
</body>
</html>

 

 


문서 객체 모델 style : display

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>
	<button type="button" id="displayBtn">보이게하기</button>
	<div class="view">
		<h1>안녕하세요.</h1>
	</div>
	<div class="view" style="display: none;">
		<h1>한국스마트정보교육원</h1>
	</div>
	
	<script type="text/javascript">
		var displayBtn = document.getElementById('displayBtn');
		displayBtn.addEventListener('click', function () {
			var view = document.getElementsByClassName('view');
			for(var i = 0 ; i <view.length ; i++){
				if (view[i].style.display == 'none' ){
					view[i].style.display = 'block';
				}else{
					view[i].style.display = 'none';
				}
			}
		});
	</script>	
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>
	
	<button type="button" class="btn" value="0">버튼1</button>
	<button type="button" class="btn" value="1">버튼2</button>
	
	<div class="displayDiv">
		<h1>뷰1</h1>
	</div>
	<div class="displayDiv" style="display: none;">
		<h1>뷰2</h1>
	</div>
	
	<script type="text/javascript">
		var btn = document.getElementsByClassName('btn');
		for(var i = 0 ; i <btn.length ; i++){
			btn[i].addEventListener('click', function () {
				console.log(this.value);
				var displayDiv = document.getElementsByClassName('displayDiv');
				for(var i = 0; i <displayDiv.length ; i++){
					if(this.value == "1"){
						this.value='0';
						displayDiv[i].style.display = 'none';
					}else{
						this.value= '1';
						displayDiv[i].style.display = 'block';
					}
				}
			})
		}
	</script> 
		
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델 - style : display</title>
</head>
<body>

	<button type="button" class="btn" value="0">버튼1</button>
	<button type="button" class="btn" value="1">버튼2</button>
	
	<div id="displayDiv01">
		<h1>뷰1</h1>
	</div>
	<div id="displayDiv02" style="display: none;">
		<h1>뷰2</h1>
	</div>
	
	<script type="text/javascript">
		var btn = document.getElementsByClassName('btn');
		for(var i = 0 ; i <btn.length ; i++){
			btn[i].addEventListener('click', function () {
				//버튼의 value 값을 가지고 온다.
				//버튼의 value 값은 index와 맞추어 작업했다.
				console.log(this.value);
				var displayDiv02 = document.getElementById('displayDiv01')
				var displayDiv02 = document.getElementById('displayDiv02')
			if(this.value == '0'){
				displayDiv01.style.display = 'block';
				displayDiv02.style.display = 'none';
			}else{
				displayDiv01.style.display = 'none';
				displayDiv02.style.display = 'block';
			}
			})
		}
	</script>
	
	
</body>
</html>

탭버튼 만들기 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>탭버튼 만들기</title>
</head>
<body>
	<!-- 
		실습3. 3개의 버튼과 3개의 div객체가 있다.
		각각 버튼을 클릭시 div객체의 인덱스와 버튼의 인덱스가 일치하는
		div객체만 display 되게 하여라. 
	 -->
	 <button type="button" class="displayBtn" value="0">공지사항</button>
	 <button type="button" class="displayBtn" value="1">자유게시판</button>
	 <button type="button" class="displayBtn" value="2">뉴스</button>
	 <div id="notice">
	 	<div>1 '비상' 14차례 언급한 문 대통령…"이것저것 따질 계제 아니다"</div>
		<div>2 "한선교, 계획된 뒤통수"…흠모한 선배라던 황교안과 무슨일</div>
		<div>3 이인영 "추경 못하면 역사의 죄인" 심재철 "국민 손에 돈 쥐어줄 궁리만 해"</div>
		<div>4 文대통령 "비상경제시국"…개학 2주 연기로 가닥</div> 
	 </div>
	 <div id="free" style="display: none;">
	 	<div>5 [단독] 황교안 격노·사천 비판에 한선교 “젊음과 전문성에 치중”</div>
		<div>6 황교안-한선교 공천 갈등 '폭발'…통합당, 해법 찾기 고심</div>
		<div>7 이해찬의 '내로남불'</div>
		<div>8 심상정 "꼼수가 꼼수 낳는 참담한 상황…어려워도 원</div>
	 </div>
	 <div id="news" style="display: none;">
	 	<div>[코로나19] “팬데믹도 막을 수 없다”…삼성·SK하이닉스 신공장 준비 ‘이상 無’ </div>
		<div>국제유가 반토막인데 휘발유 가격은 여전히 1500원대…왜? 포토 </div>
		<div>다중주택의 필로티 주차장 층수에서 제외된다 포토 한국일보</div>
		<div>대구·경북 가던 특별공급 마스크, 수도권 약국에 푼다(종합) 포토 </div>
	 </div>
	 
	 
	 <script type="text/javascript">
	 	var displayBtn = document.getElementsByClassName('displayBtn');
	 	for(var i = 0 ; i <displayBtn.length ; i++){
	 		displayBtn[i].addEventListener('click', function() {
	 			var notice = document.getElementById('notice');
	 			var free = document.getElementById('free');
	 			var news = document.getElementById('news');
	 			
	 			if(this.value == '0'){
	 				notice.style.display = 'block';
	 				free.style.display = 'none';
	 				news.style.display = 'none';
	 				
		 		}else if(this.value =='1'){
		 			notice.style.display = 'none';
	 				free.style.display = 'block';
	 				news.style.display = 'none';
		 			
		 		}else if(this.value =='2'){
		 			notice.style.display = 'none';
	 				free.style.display = 'none';
	 				news.style.display = 'block';
		 		}	
			})
	 	};
	 	
	 </script>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
	<input type="number"> X <input type="number">
	<button type="button" id="action">계산하기</button>
	<div id="result"></div>
	<!--  
		실습 4. 아이디 action 버튼 클릭시 input의 숫자값을 곱하여
		아이디 result에 결과값을 뿌려주시오.
		(계산값이 50 이상일 경우 텍스트 색상 빨강, 49 이하일 경우 검정) 
	-->

	<script type="text/javascript">
		
		var action = document.getElementById('action');
		
		
		action.addEventListener('click', function() {
			var input = document.getElementsByTagName('input');
			var result = document.getElementById('result');
			var t = parseInt(input[0].value)*parseInt(input[1].value);
			
			if(t >= 50 ){
				result.style.color = '#FF0000';
			}else {
				result.style.color = '#000000';
			}
			
			result.innerHTML = t;
		
		})
		
	</script>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!--  
		실습 5. 상품 가격은 아이디 price에 명시되어있다.
		수량을 선택할 경우 아이디 result에 총 상품가격을 상품가격 x 수량만큼 계산하여 적용하라.
		(아이디 price X 아이디 num = 아이디 result)
	-->
	
	상품가격 : <input type="number" id="price" value = "5000" readonly="readonly">
	상품수량 :
	<select id="num">
		<option value="0"> :: 수량 선택 ::</option>
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
		<option value="4">4</option>
	</select>
	<div>
	총 계산 금액 : <input type="text" id="result" value="" readonly="readonly">
	</div>
	
	<script type="text/javascript">

		var num = document.getElementById('num');
		
		num.addEventListener('change', function() {
			var price =  document.getElementById('price');
			var result = document.getElementById('result');
			result.value = Number(this.value) * parseInt(price.value);
		})
			
	
				
	</script>
</body>
</html>

 

 

이벤트

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이벤트 종류</title>
<script type="text/javascript">
	/*  
		이벤트 : 사용자가 특정 행위를 하였을 때 발동시키는 이벤트
		이벤트 사용하기 : on이라는 속성 , document.addEventListener 메서드 사용
			- click : 사용자가 어떤 특정 객체를 클릭했을 경우	
	*/
</script>
</head>
<body>
	<button type="button" id="myBtn">클릭이벤트</button>
	<input type="text" name="memberName" onkeypress = "myKeypress(this);">
	<select id="mySelect">
		<option value=""> :: 선택 :: </option>
		<option value="전주"> 전주 </option>
		<option value="군산"> 군산 </option>
	</select>
	
	<input type="text" name="memberAge" id="myKeydown">
	
	<script type="text/javascript">
		var myBtn = document.getElementById('myBtn');
		myBtn.addEventListener('click',function(){
			console.log('클릭이벤트 발동');
		})
		
		var myKeypress = function(obj) {
			console.log('키보드이벤트 발동',obj.value);
		}
		
		var mySelect = document.getElementById('mySelect');
		mySelect.addEventListener('change', function() {
			console.log('체인지 이벤트 발동', this.value);
		})
		
		var myKeydown = document.getElementById('myKeydown');
		myKeydown.addEventListener('keydown', function() {
			console.log('키다운 이벤트 발동', this.value);
			if(this.value.length > 10){
				alert('10글자 이하로 입력해주세요.');
				return;
			}
		}) 
		/* 위와 같은 식.
		var myKeydown = document.getElementById('myKeydown');
		var keyEv = function() {
			console.log('키다운 이벤트 발동', this.value);
			if(this.value.length > 10){
				alert('10글자 이하로 입력해주세요.');
				return;
			}
		};
		myKeydown.addEventListener('keydown', keyEv); */
		
	</script>
	
</body>
</html>

 

 


유효성 검사

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>유효성 검사</title>
</head>
<body>
	<form id = "memberForm" action="./dom03.html" method ="post">
		<input type = "text" name="memberName">
		<input type = "text" name="memberAge">
		<button type="button" id="memberInfoCheck">전송</button>
	</form>
	
	<script type="text/javascript">
		var evBtn = document.getElementById('memberInfoCheck');
		evBtn.addEventListener('click',function(){
			var form = document.getElementById('memberForm');
			var memberName = form.memberName;
			var memberAge = form.memberAge;
			if(memberName.value == ''){
				alert('회원명을 입력하세요.');
				memberName.focus();
				return; //함수를 종료하기 위한 return.
			}
			if(memberAge.value == ''){
				alert('회원 나이를 입력하세요.');
				memberAge.focus();
				return; //함수를 종료하기 위한 return.
			}
			form.submit();
		});
	</script>
</body>
</html>

 

로그인 유효성 검사 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 유효성 검사</title>
</head>
<body>
	<!-- 
		실습 5. 아이디와 패스워드를 입력하는 input 태그를 만들고
		로그인 버튼을 클릭시 아이디와 패스워드를 체크하는 유효성 검사 코드를 작성하여라.
		아이디 : input type text
		패스워드 : input type password
	 -->
	 
	 <form action="./domEx02.html" method="post" id="logForm">
	 	ID	:	<input type ="text" name="id">
	 	PW	:	<input type ="password" name="pw">
	 	<button type ="button" id="logBtn"> 로그인 </button>
	 </form>
	 
	 <script type="text/javascript">
	 	
	 	var logBtn = document.getElementById('logBtn');
	 	logBtn.addEventListener('click', function() {
		 	var logForm = document.getElementById('logForm');
		 	var id = logForm.id;
		 	var pw = logForm.pw;
		 	
			if(id.value == ''){
				alert('ID를 입력하세요');
				id.focus();
				return;
			}
			if(pw.value == ''){
				alert('PW를 입력하세요');
				pw.focus();
				return;
			}
			logForm.submit();
		});
	 
	 </script>
</body>
</html>

회원가입 유효성 검사 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 유효성 검사</title>
</head>
<body>
	<!-- 
		실습6. 회원가입에 관련된 폼을 작성하고 유효성 검사를 하여라.
		회원가입에 필요한 필드
		- 이름
		- 아이디
		- 패스워드 -> 패스워드
		- 패스워드 확인 -> 패스워드
		- 이메일
		- 생년월일
		- 성별 -> 라디오 박스
		- 휴대전화번호
		- 취미 3개 (게임, 프로그래밍, 영화) 1개 이상은 무조건 체크 -> 체크박스
				
	 -->
	 
	 <form id="joinForm" action="./회원가입유효성검사.html" method="post">
	 	이름 : <input type="text" name="uName"><br/>
	 	아이디 : <input type="text" name="uId"><br/>
	 	패스워드 : <input type="password" name="uPw"><br/>
	 	패스워드 확인 :<input type="password" name="uPwCon"><br/>
	 	이메일 : <input type="text" name="uEmail"><br/>
	 	생년월일 : <input type="number" name="uBirth"><br/>
	 	성별<br/>
	 	남<input type="radio" name="uGender" value="남" >
	 	여<input type="radio" name="uGender" value="여" ><br/>
	 	휴대전화번호 : <input type="number" name="uTel"><br/>
	 	취미<br/>
	 	게임<input type="checkbox" name="uHobby" value="게임">
	 	프로그래밍<input type="checkbox" name="uHobby" value="프로그래밍">
	 	영화<input type="checkbox" name="uHobby" value="영화">
	 	<button type="button" id="joinBtn"> 회원가입 </button>
	 </form>
	 
	 <script type="text/javascript">
	 var joinBtn = document.getElementById('joinBtn');
     	joinBtn.addEventListener('click', function(){
        	var joinForm = document.getElementById('joinForm');
      	  	var uName = joinForm.uName;
        	var uId = joinForm.uId;
		 	var uPw = joinForm.uPw;
		 	var uPwCon = joinForm.uPwCon;
		 	var uEmail = joinForm.uEmail;
		 	var uBirth = joinForm.uBirth;
		 	var uGender = joinForm.uGender;
		 	var uTel = joinForm.uTel;
		 	var uHobby = joinForm.uHobby;

		 	if(uName.value == ''){
		 		alert('사용자 이름을 입력해주세요.');
		 		uName.focus();
		 		return;
		 	}
		 	
		 	if(uId.value == ''){
		 		alert('사용자 아이디를 입력해주세요.');
		 		uId.focus();
		 		return;
		 	}
		 	
		 	if(uPw.value == ''){
		 		alert('사용자 패스워드를 입력해주세요.');
		 		uPw.focus();
		 		return;
		 	}
		 	
		 	if(uPwCon.value == ''){
		 		alert('사용자 패스워드 확인을 입력해주세요.');
		 		uPwCon.focus();
		 		return;
		 	}
		 	
		 	if(uPw.value != uPwCon.value){
		 		 alert('패스워드가 일치하지 않습니다. 다시 확인해주세요.')
		 		uPwCon.value = null;
		 		uPw.value = null;
		 		uPw.focus();
		 		    return;}
		 	
		 	if(uEmail.value == ''){
		 		alert('사용자 이메일을 입력해주세요.');
		 		uEmail.focus();
		 		return;
		 	}
		 	
		 	if(uBirth.value == 0){
		 		alert('사용자 생년월일을 입력해주세요.');
		 		uBirth.focus();
		 		return;
		 	}
		 	
		 	var re = 0;
		 	
		 	for(var i = 0; i < uGender.length ; i++){
		 		if(uGender[i].checked){
		 			re++
		 			}
		 		};
		 	if (re <1){
		 		alert('사용자 성별을 선택해주세요.');
		 		uGender[0].focus();
		 		return;
		 		}
		 
		 	
		 	if(uTel.value == ''){
		 		alert('사용자 휴대전화 번호를 입력해주세요.');
		 		uTel.focus();
		 		return;
		 	}
		 	
			re = 0;
			for(var i = 0 ; i <uHobby.length ; i++){
				if(uHobby[i].checked){
					re++;
				}
			}
			if(re<1){
				alert('취미를 하나 이상 선택해주세요.');
				uHobby[0].focus();
				return;
			}
		 	
		 	joinForm.submit();
	 	});
	 	
	 </script>
</body>
</html>

객체 생성자 함수

	/*
		객체 생성자 함수는 new 연산자로 메모리를 생성하여 활용한다.
		또한 함수내에서 this 키워드도 활용이 가능하다.
		****************중요****************
		this 키워드로 속성 및 메서드 작업시 외부에서 접근이 가능하다
	*/
	//this 키워드 없이 함수 작업
	var myFn1 = function(){
		//함수 내부에 var 라는 키워드로 변수 선언시 외부에서 접근 불가
		var name = '홍길동';
		//this 키워드로 변수 선언시 외부에서 접근이 가능하다.
		this.age = 20;
	}
	var my = new myFn1();
	//new 연산자를 통하여 메모리 할당시 객체(object) 형태로 메모리 할당
	console.log(my);

new 연산자를 통해 메모리 할당시 객체(object) 형태로 메모리 할당.

** var 키워드로 선언한 변수 name에는 접근이 불가능하다.

** this 키워드로 선언한 변수 age 에는 접근이 가능하다.

 

 


prototype

	var MyFn1 = function(){
		//함수 내부에 var 라는 키워드로 변수 선언시 외부에서 접근 불가
		var name = '홍길동';
		//this 키워드로 변수 선언시 외부에서 접근이 가능하다.
		this.age = 20;
		this.fn = function(){
			console.log('메서드 호출');
		}
		this.setName = function(setName){
			name = setName;
		}
		this.getName = function () {
			return name;
		}
	}
	
	//prototype으로 객체를 생성할 때 함수를 등록하는 기본형 (확장시킬 때 이용)
	MyFn1.prototype.setAge = function(changeAge){
		this.age = changeAge;
	}
	MyFn1.prototype.getAge = function(){
		return this.age;
	}

프로토타입을 사용하여 등록한 함수는 원형(객체 생성자함수)에서 생성된 객체를 공유할 수 있다.


	/*
		실습 3. fn함수와 obj객체가 있다. fn함수를 실행할 때 obj를 인수로 넘기고
		fn함수 실행시 obj 내부에 있는 n1, n2 속성값을 합산시켜
		결과값을 반환하여라.
	*/
	
	var obj = {n1 : 10, n2 : 20};
	var fn = function (o) {
		var result = o.n1 + o.n2;
		return result;		
	}
	
	var result = fn(obj);
	console.log(result);
	

 


문서객체모델

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서객체모델</title>
<script type="text/javascript">
	/*
		dom -> 문서객체모델 : Document Object Model
		문서의 정보가 담겨있다.
		document 라는 변수명으로 문서에 접근할 수 있다.
	*/
</script>
</head>
<body>

</body>
</html>

 


문서 객체 모델

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서객체모델</title>
<script type="text/javascript">
	/*
		dom -> 문서객체모델 : Document Object Model
		문서의 정보가 담겨있다.
		document 라는 변수명으로 문서에 접근할 수 있다.
		
		<< 객체 검색 메서드 >>
			- id 검색		: document.getElementById('아이디명');
			- tag명 검색	: document.getElementsByTagName('태그명');
			- class명 검색	: document.getElementsByClassName ('클래스명');
			- 속성 name 값 검색 : document.네임명 (**name이라는 속성은 form객체에만 적용**)
		
		//폼 하위 접근
		ex) document.myForm.myName;
			document.getElementById('myForm').myName;
			
		//폼 객체에 접근시 폼 객체의 속성에 접근할 수 있다.
		ex)	var myName = document.myForm.myName;
			console.log(myName.value);
		
		
		//태그 검색과 삽입
		innerHTML, innerText의 속성으로 접근 및 요소값 변경 가능
		ex)	var myTag = document.getElementById('myTag');
			myTag.innerHTML = '<h2>한국스마트정보교육원</h2>';
		
		//다중 객체 접근하여 반복문 풀기
		var checkArray = document.getElementsByClassName('myCheck');
		
		for(var i = 0; i <checkArray.length ; i++){
    		checkArray[i].checked = true;
    	}
		
		//체크된 체크박스의 value만 콘솔에 출력하기
		for(var i = 0; i <checkArray.length ; i++){
    		if(checkArray[i].checked){
                console.log(checkArray[i].value);
            }
    	}
		
		//form 태그에 포커스 잡기
		//마지막에 선택된 객체에 속성 focus()로 접근 가능
		객체.focus() : 해당 객체에 커서 이동하기
		
        //form 객체 속성 변경 및 submit 하기
		var myForm = document.getElementById('myForm');
		myForm.action = './';
		myForm.method = 'post';
		myForm.submit(); // action속성으로 전송
		
	*/
	
	console.log('상위에서 객체 검색', document.getElementById('myForm'));
</script>
</head>
<body>

	<form id="myForm" name = "myForm">
		<input type = "text" name = "myName">
		<input type = "text" name = "myAge">
		<input type = "checkbox" name = "add" value = "전주" class = "myCheck" checked= "checked">
		<input type = "checkbox" name = "add" value = "군산" class = "myCheck">
		<input type = "checkbox" name = "add" value = "익산" class = "myCheck">
		<button type = "button" id="myBtn">버튼</button>
	</form>
	
	<div id = "myTag">
		<h1>안녕하세요.</h1>
	</div>
	
	<script type="text/javascript">
		console.log('하위에서 객체 검색', document.getElementById('myForm'));
	</script>
</body>
</html>

문서를 읽는 순서는 위에서 아래 방향이기 때문에 script의 위치는 html의 하단에 위치해야 한다.


객체 검색 메서드

 


document.getElementById();를 통해 form에 접근하여 value를 변경할 수 있다.



document.getElementById();를 통해 <div> 태그에 접근하여

innerHTML을 사용해 html을 변경할 수 있다.

 


document.getElementByClassName();를 통해 객체에 접근하여 객체 내부의 값을 array로 get 가능. array를 for 반복문으로 값을 추출, 변경할 수 있다.


버튼 클릭시 함수를 호출하는 이벤트 발생

var myFunction = function() { 
	console.log('함수호출')
}

 


<html>
<body>

	<form id="myForm" name = "myForm">
		<input type = "text" name = "myName">
		<input type = "text" name = "myAge">
		<input type = "checkbox" name = "add" value = "전주" class = "myCheck" checked= "checked">
		<input type = "checkbox" name = "add" value = "군산" class = "myCheck">
		<input type = "checkbox" name = "add" value = "익산" class = "myCheck">
		<button type = "button" id="myBtn" onclick="myFunction();">버튼</button>
	</form>
	
	<div id = "myTag">
		<h1>안녕하세요.</h1>
	</div>
	

</body>
	<script type="text/javascript">
		console.log('하위에서 객체 검색', document.getElementById('myForm'));
	
		var myFunction = function() {
			console.log('함수호출')	
		var myForm = document.getElementById('myForm');
		console.log('myName : ', myForm.myName.value);
		console.log('myAge : ', myForm.myAge.value);
		var checkArray = document.getElementsByClassName('myCheck');
		for(var i = 0; i <checkArray.length ; i++){
    		if(checkArray[i].checked){
                console.log(checkArray[i].value);
    		}
		}
	}
	</script>
</html>


문서 객체 모델 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문서 객체 모델</title>

</head>
<body>
	<form action="./domEx01.html" method="get" id = "mF"> 
		<input type = "text" name="memberName">
		<input type = "number" name="memberAge">
		<button type = "button" onclick="v();" >전송하기</button>
	</form>
	<script type="text/javascript">
		/*  
			실습 4.위의 전송하기 버튼 클릭시 input 태그의 값을 콘솔창에 출력시키고 submit 시키시오. 
		*/
		var mF = document.getElementById('mF');
		var v = function() {
			console.log(mF.memberName.value);
			console.log(mF.memberAge.value);
			mF.submit();			
		}
		
		
		
	</script>


</body>
</html>
	/*
		실습 1. 아래와 같이 선언된 객체가있다. 해당 객체에는
		name, memberArray, filter 라는 속성이 있으며
		name 은 문자열 memberArray는 배열, filter는 함수값을 가지고 있다.
		filter 함수(메서드)를 실행시키고 인수값에 들어간 사람의 정보와 
		memberArray의 정보에 일치하는 사람의 명을 name이라는 속성에 대입시키고 obj 라는 객체를 출력시켜라	
	*/

	var obj = {
			name : '',
			memberArray : ['홍길동','홍길순','이순신'],

			filter : function(name){
			 
				for(var i = 0 ; i< this.memberArray.length ; i++){
					if (this.memberArray[i] == name){
					this.name = name;
					}
				}
			}
	};
	obj.filter('입력명');
	console.log(obj);
	

 

memberArray 배열에 없는 이름을 입력했을 경우 :: obj.name에 대입되지 않음

 

memberArray배열에 존재하는 값을 입력했을 경우 :: obj.name에 대입됨.

 


	/*
		실습 2. myArray라는 배열이 있다. myFn함수를 실행시켜 myArray 배열의 값을 합산하여 총 합산값을 리턴하여 결과값을 출력시켜라.
	*/
	
	var myArray = [10,20,30,40,50];
	var myFn = function(){
		var result = 0;
		for(var i = 0 ; i < myArray.length ; i++){
			result += myArray[i];
		}
		return result;
	}
	console.log(myFn());

Object data type

 

- 여러가지 데이터들이 모여 있는 복잡한 데이터로 기본 자료형에 비해 크기가 작다.(보통 대문자)

 

- 종류 : String, System, Arraylist 등

ClassName 객체참조변수 = new ClassName();

 

- 메모리에 할당된 영역으로 값이 바로 들어가는 primitive data type과 달리 메모리 어딘가에 저장된 값의 주소값이 할당된 영역에 들어간다.

 

char a = 'b';

메모리에 할당된 영역 a에 'b' 값이 바로 들어간다.

 

String c = "d";

메모리 어딘가에 "d" 값이 저장되고 그 주소값이 c 영역에 들어간다.

로그인 폼에서 id pw 받기

로그인 폼 생성
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">
		 /module/top.jsp<br/>
		     상단 메뉴	<br/><br/>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
<a href="#">03상품등록</a>
<a href="#">04상품리스트</a><br/>

<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>

			   
		 </div>
		 <!-- End Header -->
폼에서 입력된 id pw login_pro.jsp 에서 받기
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

%>

 


id 일치/불일치 , pw 조건 비교

login_pro.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
	}else {
		System.out.println("04 비밀번호 불일치 조건");
	}
	
}else{
	System.out.println("02 아이디 불일치 조건");
}

%>

 

로그인 성공 조건에 response.sendRedirect(request.getContextPath() + "/index.jsp");  추가.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
		response.sendRedirect(request.getContextPath() + "/index.jsp"); // LayoutUG35/index.jsp 
	}else {
		System.out.println("04 비밀번호 불일치 조건");
	}
	
}else{
	System.out.println("02 아이디 불일치 조건");
}

%>
test

id 와 pw 모두 불일치인 경우
id 일치 pw 불일치의 경우
id 와 pw 가 모두 일치한 경우 index.jsp로 redirect 되었다.

 

 


session setting 후 index로 redirect

session.setAttribute(arg0(변수의 역할) , arg1(값의 역할));

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
		response.sendRedirect(request.getContextPath() + "/index.jsp"); // LayoutUG35/index.jsp 
		session.setAttribute("S_LEVEL", dblevel);
		session.setAttribute("S_NAME", dbname);
	}else {
		System.out.println("04 비밀번호 불일치 조건");
	}
	
}else{
	System.out.println("02 아이디 불일치 조건");
}

%>

 

 


top에서 session 데이터 확인

top.jsp 에서 session을 확인하기 위한 코드를 추가했다.
<%
String S_LEVEL = (String)session.getAttribute("S_LEVEL"); 
String S_NAME = (String)session.getAttribute("S_NAME"); 
System.out.println (S_LEVEL + "<= S_LEVEL top.jsp");
System.out.println (S_NAME + "<= S_NAME top.jsp");
%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
String S_LEVEL = (String)session.getAttribute("S_LEVEL");
String S_NAME = (String)session.getAttribute("S_NAME");
System.out.println (S_LEVEL + "<= S_LEVEL top.jsp");
System.out.println (S_NAME + "<= S_NAME top.jsp");
%>

  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">
		 /module/top.jsp<br/>
		     상단 메뉴	<br/><br/>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
<a href="#">03상품등록</a>
<a href="#">04상품리스트</a><br/>

<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>

			   
		 </div>
		 <!-- End Header -->
test

서버를 리스타트하고  index.jsp에서 id와 pw가 모두 불일치했을 때의 화면과 콘솔
서버를 리스타트하고  index.jsp에서 id와 pw가 모두 일치했을 때의 화면과 콘솔

 

 


top에서 로그인 전과 후 화면전환

 

로그인 
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
String S_LEVEL = (String)session.getAttribute("S_LEVEL");
String S_NAME = (String)session.getAttribute("S_NAME");
System.out.print (S_LEVEL + "<= S_LEVEL top.jsp");
System.out.print (S_NAME + "<= S_NAME top.jsp");
%>

  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">
		 /module/top.jsp<br/>
		     상단 메뉴	<br/><br/>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
<a href="#">03상품등록</a>
<a href="#">04상품리스트</a><br/>

<%
if(S_LEVEL == null){
%>


<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>

<%
} else {
%>

	<%= S_NAME %>님 <%= S_LEVEL %> 권한 로그인 중
	<a href ="<%= request.getContextPath()%>/login/logout.jsp">로그아웃</a>

<% 	
}
%>
			   
		 </div>
		 <!-- End Header -->

 


logout

logout.jsp에 로그아웃 처리
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
	session.invalidate(); 	//세션종료
%>

<script type="text/javascript">
	alert('로그아웃');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>

 

id 와 pw 모두 일치시
로그아웃 처리시


권한별 메뉴 변경

권한별 메뉴 설정하기
1관리자 2판매자 3구매자 4로그인전
01회원가입 
02회원리스트 
03상품등록 
04상품리스트 
01회원가입 

03상품등록 
04상품리스트 
01회원가입 


04상품리스트 

01회원가입 

 

 

top.jsp의 코드 수정
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
String S_LEVEL = (String)session.getAttribute("S_LEVEL");
String S_NAME = (String)session.getAttribute("S_NAME");
System.out.println (S_LEVEL + "<= S_LEVEL top.jsp");
System.out.println (S_NAME + "<= S_NAME top.jsp");
%>

  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">
		 /module/top.jsp<br/>
		     상단 메뉴	<br/><br/>


<%
if(S_LEVEL == null){
%>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>

<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>
<%
} else {
	if(S_LEVEL.equals("관리자")){%>	
	<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
	<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
	<a href="#">03상품등록</a>
	<a href="#">04상품리스트</a><br/>
<% 	
	} else if(S_LEVEL.equals("판매자")){
%>
	<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
	<a href="#">03상품등록</a>
	<a href="#">04상품리스트</a><br/>

<%	} else if (S_LEVEL.equals("구매자")) { %>	
	<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
	<a href="#">04상품리스트</a><br/>
<% }  %>
	<%= S_NAME %> 님 <%= S_LEVEL %> 권한 로그인 중
			<a href ="<%= request.getContextPath()%>/login/logout.jsp">로그아웃</a>			
<%
}
%>
			   
		 </div>
		 <!-- End Header -->
login_pro.jsp 의 dblevel 변수에 담긴 값이 관리자인 경우

상단 메뉴가 4가지, 관리자 권한으로 로그인되었다고 출력되는 것을 확인

 

login_pro.jsp 의 dblevel 변수에 담긴 값이 판매자인 경우

상단 메뉴가 3가지, 판매자 권한으로 로그인되었다고 출력되는 것을 확인

 

 

login_pro.jsp 의 dblevel 변수에 담긴 값이매자인 경우

상단 메뉴가 2가지, 구매자 권한으로 로그인되었다고 출력되는 것을 확인

 

로그인 상태가 아닌 경우 

상단 메뉴가 4가지 출력되는 것을 확인 

 


js_href를 활용하여 경고창으로 로그인 처리 알림

 

log_pro.jsp에 자바스크립트 코드를 삽입한다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
		//response.sendRedirect(request.getContextPath() + "/index.jsp"); // LayoutUG35/index.jsp 
		session.setAttribute("S_LEVEL", dblevel);
		session.setAttribute("S_NAME", dbname);
%>

<script type="text/javascript">
	alert('로그인성공');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>

<%		
	}else {
		System.out.println("04 비밀번호 불일치 조건");
%>

<script type="text/javascript">
	alert('비밀번호 불일치');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>

<%
	}
}else{
	System.out.println("02 아이디 불일치 조건");
%>

<script type="text/javascript">
	alert('아이디 불일치');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>

<%
}
%>
id가 불일치했을 경우

id가 일치하고 pw가 불일치했을 경우

id와 pw가 일치했을 경우

 

 

 


js_href를 활용하여 경고창 하나로 로그인 처리 알림

 

항상 경고창이 뜨도록 경고창 코드를 작성
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
		//response.sendRedirect(request.getContextPath() + "/index.jsp"); // LayoutUG35/index.jsp 
		session.setAttribute("S_LEVEL", dblevel);
		session.setAttribute("S_NAME", dbname);
	}else {
		System.out.println("04 비밀번호 불일치 조건");
	}
}else{
	System.out.println("02 아이디 불일치 조건");
}
%>

<script type="text/javascript">
	alert('로그인 처리 알림');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>
어떤 조건이어도 '로그인 처리 알림' 경고창이 뜬다.

 

 

 

변수 alert를 선언하여 로그인 처리에 대한 알림 String을 경우에 따라 alert에 변수에 입력하도록 작성한다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");

System.out.println("id: "+ id);
System.out.println("pw: "+ pw);

String dbid = "id001";
String dbpw = "pw001";
String dblevel = "관리자"; //관리자 or 판매자 or 구매자 모두 테스트
String dbname = "김길동";

String alert = null;


if(id.equals(dbid)){
	System.out.println("01 아이디 일치 조건");
	if(pw.equals(dbpw)){
		System.out.println("03 비밀번호 일치 로그인 성공 조건");
		//response.sendRedirect(request.getContextPath() + "/index.jsp"); // LayoutUG35/index.jsp 
		session.setAttribute("S_LEVEL", dblevel);
		session.setAttribute("S_NAME", dbname);
		
		alert = "로그인 성공";
	
	}else {
		System.out.println("04 비밀번호 불일치 조건");
		
		alert = "비밀번호 불일치";
	}
}else{
	System.out.println("02 아이디 불일치 조건");
	
	alert = "아이디 불일치";
}
%>

<script type="text/javascript">
	alert('<%= alert%>');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>
id가 불일치했을 경우의 알림과 콘솔창

id는 일치하고 pw가 불일치했을 경우의 알림과 콘솔창

id와 pw가 모두 일치했을 경우의 알림과 콘솔창

 

'JSP' 카테고리의 다른 글

[JSP+MySQL] list 불러오기  (0) 2020.03.26
[JSP+MySQL] JSP + MySQL / JDBC  (0) 2020.03.19
[JSP] JSP 문법 구조 / include를 활용해 layout 나누기  (0) 2020.03.13
[JSP] Java와 jsp 연결  (0) 2020.03.12

include Directive(디렉티브)

일부 소스코드를 포함시키는 개념

<%@ include file="/module/top.jsp" %>
<%@ include file="/module/left.jsp" %>

JSP 문법 구조

<%        %> : 자바코드 : scriptlet(스크립트릿)

<%@    %> : 하나의 jsp 설정 : Directive(디렉티브)

<%=      %> : 변수에 담겨있는 값을 출력하는 방법 중 하나 : 표현식

<%!       %> : 메서드 선언부 -> 향후 자바코드로 빠지면 안쓴다

<%--   --%> : 주석 ( Ctrl + Shift + / )

index 레이아웃 전체

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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" type="text/css" href="<%= request.getContextPath() %>/css/main.css" />
</head>

<body>

  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">

		     상단 메뉴	<br/><br/>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
<a href="#">03상품등록</a>
<a href="#">04상품리스트</a><br/>

<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>

			   
		 </div>
		 <!-- End Header -->

	<!-- Begin Left Column -->
		 <div id="leftcolumn">

		       왼쪽 메뉴	<br/>
		 
		 </div>
		 <!-- End Left Column -->
		 
  		 <!-- Begin Right Column -->
		 
		 <div id="rightcolumn">
  		       
	          <a href="#">Download this CSS Layout</a>		 
	         
		 </div>
		 <!-- End Right Column -->
		 
		 <!-- Begin Footer -->
		 <div id="footer">

			   하단 메뉴	<br/>	
			  한국스마트정보교육원 063-717-1008 ksmart.or.kr
			    
	     </div>
		 <!-- End Footer -->
		 
   </div>
   <!-- End Wrapper -->

    
</body>
</html>

 

top

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


  <!-- Begin Wrapper -->
   <div id="wrapper">
   
         <!-- Begin Header -->
         <div id="header">
		 /module/top.jsp<br/>
		     상단 메뉴	<br/><br/>
<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01회원가입</a>
<a href="<%= request.getContextPath() %>/user/user_list.jsp">02회원리스트</a>
<a href="#">03상품등록</a>
<a href="#">04상품리스트</a><br/>

<form action="<%=request.getContextPath()%>/login/login_pro.jsp" method="post">
아이디 : <input type = "text" name = "id">
비 번 : <input type = "text" name = "pw">
<input type ="submit" value = "로그인">
</form>

			   
		 </div>
		 <!-- End Header -->

 

left

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
		 <!-- Begin Left Column -->
		 <div id="leftcolumn">
		 	/module/left.jsp <br/>
		       왼쪽 메뉴	<br/>
		 
		 </div>
		 <!-- End Left Column -->
		 
  		 <!-- Begin Right Column -->
		 
		 <div id="rightcolumn">
 

 

hadan

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
		 </div>
		 <!-- End Right Column -->
		 
		 <!-- Begin Footer -->
		 <div id="footer">
		      /module/hadan.jsp <br/>
			   하단 메뉴	<br/>	
			  한국스마트정보교육원 063-717-1008 ksmart.or.kr
			    
	     </div>
		 <!-- End Footer -->
		 
   </div>
   <!-- End Wrapper -->

index에 include

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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" type="text/css" href="<%= request.getContextPath() %>/css/main.css" />
</head>

<body>

 <%@ include file="/module/top.jsp" %>
 <%@ include file="/module/left.jsp" %>
 		       
	          <a href="#">Download this CSS Layout</a>		 
	          
 <%@ include file="/module/hadan.jsp" %>
    
</body>
</html>

 

 

화면

 

'JSP' 카테고리의 다른 글

[JSP+MySQL] JSP + MySQL / JDBC  (0) 2020.03.19
[JSP] JSP_session응용  (0) 2020.03.13
[JSP] Java와 jsp 연결  (0) 2020.03.12
[JSP] 데이터와 화면 연결하기  (1) 2020.03.12

+ Recent posts