Cloud 기반 웹 DevOps 프로젝트 개발자 과정

문이빈·2023년 6월 26일
0

Java Script

내부 자바스크립트 사용하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>글자색 바꾸기</title>
<style type="text/css">
body{text-align: center;}

#heading{color: blue;}

#text{
color: gray;
font-size: 15px;}

</style>

</head>
<body>

<h1 id="heading">자바스크립트</h1>
	<p id="text">위 텍스트를 클릭해 보세요</p>
	
	<script type="text/javascript">
	// 프로그래밍
	// 변수를 선언함, heading이라는 아이디를 선택하라는 언어이고
	// var heading= document.querySelector('#heading');
	// heading이라는 변수의 값이 클릭되면, 함수를 실행하라는 언어
	// heading.onclick = function(){
	// heading의 문자 색깔을 빨간색으로 변경하라는 언어
	// heading.style.color = "red";}
	
    var heading= document.querySelector('#heading');
	heading.onclick = function(){
	heading.style.color = "red";}
	</script>
	
</body>
</html>

<html lang="ko">를 사용하는 이유는 웹 접근성 때문이다.
명시를 제대로 해주어야 스크린리더기가 이 언어를 인식하며 자동으로 음성을 변환하거나, 해당 언어에 적합한 발음을 제공하기 때문이다.
클릭 후 변화


위와 같은 내용을 외부 스크립트를 이용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>외부 자바스크립트 사용 글자색 바꾸기</title>

<style type="text/css">
body{text-align: center;}

#heading{color: blue;}

#text{
color: gray;
font-size: 15px;}

</style>
</head>
<body>

<h1 id="heading">자바스크립트</h1>
	<p id="text">위 텍스트를 클릭해 보세요</p>
	
<script type="text/javascript" src="../js/changeColor.js">
</script>

</body>
</html>

자바 스크립트에 언어 입력 (src="../js/changeColor.js")
클릭 후 변화


alert로 알림 창 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>alert 사용</title>
</head>
<body>

<script type="text/javascript">
alert('안녕하세요');
</script>

</body>
</html>


confirm로 확인 창 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
<script type="text/javascript">
var yORn = confirm("정말 끝내겠습니까");
	if(yORn){
		alert("예를 눌렀습니다." + yORn);
	}
	else{
		alert("아니오를 눌렀습니다." + yORn);
	}
</script>
</head>
<body>

</body>
</html>




var문은 변수를 선언하고, 선택적으로 초기화할 수 있다.


프롬프트 창의 기본값 지정하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>프롬프트 연습1</title>

<script type="text/javascript">
var name=prompt("이름을 입력하시오","아무개");
alert(name);

</script>
</head>
<body>

</body>
</html>


입력하는 값이 나오도록 설정
var name=prompt("이름을 입력하시오");
아무개를 적지 않아도 작동함.


Document.Write로 웹 브라우저에 제목을 표시

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document.Write 연습</title>

<script type="text/javascript">
document.write("<h1>어서오세요</h1>")

</script>
</head>
<body>

</body>
</html>


이름 받아서 콘솔 창에 표시하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome</title>

<script type="text/javascript">
var name = promt("이름을 입력하세요");
console.log(name+"님, 환영합니다.")
</script>
</head>

<body>
<h1>어서오세요</h1>

</body>
</html>

콘솔에 뜬다.


help-install~
주소 추가
위와 같이 추가하여 자바 스크립트의 문법을 추가한다...


자바 스크립트의 기본 문법(변수)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>나이 계산하기</title>
<script type="text/javascript">

var currentYear = 2023; // 선언과 동시에 저장
var birthYear;			// 선언
var age; 				// 선언
  
  birthYear = prompt("태어난 연도를 입력하세요. (YYYY)", ""); 	// 값 저장
  age = currentYear - birthYear + 1; 						// 계산해서 저장
  document.write(currentYear + "년 현재<br>");
  document.write(birthYear + "년에 태어난 사람의 나이는 " + age + "세 입니다.");
  
</script>
</head>
<body>

</body>
</html>




여기서 Browser와 jQuery 체크


자료형

사이트에서 f12 콘솔 다 지우고

document.write("<span style='color:blue'>", "Do it", "</span>")

Do it 이 파란 글씨로 화면에 뜬다.


논리형

var spring="봄";
var summer="여름";
var fall="가을";
var winter="겨울";

var season = ["봄", "여름", "가을", "겨울"];

season을 입력하면
(4) ['봄', '여름', '가을', '겨울']
0: "봄"
1: "여름"
2: "가을"
3: "겨울"
length: 4
[[Prototype]]: Array(0)

season[1]
'여름'

위와 같이 나오게 된다.


연산자

var a = 10
var b = a++ + 5


Java

다형성의 활용

package ex8;
_____________________________________________________________________________
public class MessageSend {
    String rev;
    String sen;
    String  content;
    
    // {} = 디폴트 생성자. 는 항상 기본적으로 만들어 줘야한다.
    public MessageSend() {} 
    public MessageSend(String rev, String sen, String content) {
    	this.rev = rev;
    	this.sen = sen;
    	this.content = content;
    }
    
    public void sendMsg() {}
}
_____________________________________________________________________________

public class EmailSend extends MessageSend {
	
	// 상위 클래스가 가지고 있는 것을 오버라이딩 = 재 정의
	public EmailSend(String rev, String sen, String content) {
		super(rev, sen, content);
	}
	
	public void sendMsg() {
		System.out.println("받는  이메일: " + this.rev);
		System.out.println("보내는 이메일: " + this.sen);
		System.out.println("이메일 내 용: " + this.content);
	}
}
_____________________________________________________________________________
public class FaxSend extends MessageSend {
	
	public FaxSend(String rev, String sen, String content) {
		super(rev, sen, content);
	}
	
	public void sendMsg() {
		System.out.println("받는  팩스번호: " + this.rev);
		System.out.println("보내는 팩스번호: " + this.sen);
		System.out.println("팩스    내 용: " + this.content);
	}
}
_____________________________________________________________________________
public class SmsSend extends MessageSend {

	public SmsSend(String rev, String sen, String content) {
		super(rev, sen, content);
	}
	
	public void sendMsg() {
		System.out.println("받는  전화번호: " + this.rev);
		System.out.println("보내는 전화번호: " + this.sen);
		System.out.println("문자    내 용: " + this.content);
	}
}
_____________________________________________________________________________
위의 4개의 클래스를 가지고

public class SendEx {

	public static void main(String[] args) {
    
		//슈퍼클래스로 선언해서 저장이 가능하다.
		//int[] a = new int[1, 2, 3]; 여기서 착안함.

		MessageSend[] msg = { 
				new FaxSend("02-1234-1234", "031-1234-1234", "팩스로 전달합니다."),
				new EmailSend("aa@naver.com","bb@google.com","메일로 전달합니다."),
				new SmsSend("010-1234-1234","010-2345-2345", "문자로 전달합니다.") 
				};
                
		//각 배열의 해당되는 해당 메소드(다시말해서 해당 생성된 클래스의 메소드)가 실행 된다.
		for(int i=0; i<msg.length; i++) {
			msg[i].sendMsg();
		}
        
		// 해당 배열의 객체를 하나씩 꺼내서 대표인 상위 클래스로 받으면 각자 자신의 클래스의 메소드로 실행된다.
		for(MessageSend s : msg){
			s.sendMsg();
		}
	}
}


다형성의 유형

package ex8;

public class Calculate {
	public int add(int num1, int num2) {
		return num1+num2;
	}
	public double add(double num1, double num2) {
		return num1 + num2;
	}
}
_____________________________________________________________________________

public class Eample07 {

	public static void main(String[] args) {
		int a = 4;
		int b = 5;
		double c = 11.12;
		double d = 21.34;
		
		Calculate obj = new Calculate();
		System.out.println(obj.add(a, b));
		System.out.println(obj.add(c, d));
	}
}


package ex8;

public class CalculateSquare {
public void square() {
	System.out.println("No Parameter Method Called");
}

public int square(int width, int height) {
	int area = width * height;
	return area;
}

public double square(double width, double height) {
	double area = width * height;
	return area;
}

public double square(int width, double height) {
	double area = width * height;
	return area;
	}
}

public class Polymorphism01 {

public static void main(String[] args) {
	CalculateSquare myArea = new CalculateSquare();
	System.out.println("가로: 10, 세로: 5 사각형의 넓이는 "+ myArea.square(10, 5));
	System.out.println("가로: 2.5, 세로: 4.5 사각형의 넓이는 "+ myArea.square(2.5, 4.5));
	}
}


맞는 클래스에 들어가서 값을 내보낸다.


런타임 다형성

동적 메소드로 재정의된 메소드에 대한 메소드 호풀이 런타임에 해결되는 프로세스로, 이러한 유형의 다형성은 메소드 오버라이딩으로 구현한다.

  • 메소드 오버라이딩 - 부모 클래스로부터 상소갇은 메소드를 자식 클래스에서 특정한 형태로 재정의 하는 것을 말한다.

	package ex8;

	public class Cat{
	public void sound() {
		System.out.println("고양이는 야옹하고 울다.");
		}
	}
_____________________________________________________________________________

	package ex8;

	public class Kitten extends Cat {
	
	@Override
	public void sound() {
		System.out.println("새끼 고양이는 야옹하고 울다.");
		}
	}
_____________________________________________________________________________

	package ex8;
	
	public class Example08 {

	public static void main(String[] args) {
		Cat myCat = new Cat();
		Kitten myKitten = new Kitten();
		
		myCat.sound();
		myKitten.sound();
		}
	}


	package ex8;

	public class Animal_1 {
		void eat () {
		System.out.println("먹이를 먹다. ");
		}
		
		public void animalSound() {
			System.out.println("동물이 소리를 낸다.");
		}
	}
_____________________________________________________________________________

	public class Pig extends Animal_1 {
	public void animalSound() {
		System.out.println("돼지는 꿀꿀");
		}
	}
_____________________________________________________________________________

	public class Dog extends Animal_1 {
	void bark() {
		System.out.println("멍멍하고 짖다.");
	}
	
	public void animalSound() {
		System.out.println("개는 멍멍멍");
		}
	}
_____________________________________________________________________________

	public class Polymorphism02 {

	public static void main(String[] args) {
		Animal_1 myAnimal = new Animal_1();
		Animal_1 myPig = new Pig();
		Animal_1 myDog = new Dog();
		
		myAnimal.animalSound();
		myPig.animalSound();
		myDog.animalSound();
		}
	}
    


추상 클래스

불필요한 정보를 숨기고 중요한 정보만을 나타내는 것을 의미한다.

  • 추상클래스는 상속을 해주기 위한 클래스
  • 추상 클래스 사용 시 주의 사항
  • 추상 클래스는 항상 abstract 키워드를 사용하여 선언해야 함
  • 추상 클래스의 모든 메서드를 추상으로 사용할 필요는 없음
    -> 추상 클래스에 일반적인 메서드가 포함될 수도 있음
  • 클래스의 메서드 중 하나가 추상 메서드이면 해당 클래스는 추상 클래스여야 함
  • 추상 메서드를 선언하면 자식 클래스에서 해당 메서드를 재정의해야 함
    -> 추상 클래스를 상속하는 경우 메서드 재정의는 필수
    -> 상속받은 클래스와 자식 클래스가 추상 클래스라면 메서드를 재정의하지 않아도 됨
  • 현재 클래스가 상위 클래스처럼 추상적인 경우에는 상위 클래스의 메서드를 재정의할 필요
    없음

MySQL

◆ UPDATE


형식 : UPDATE 테이블명
	  SET 컬럼1 = 변경될 값1[, 컬럼2 = 변경될 값2, ....,]
      [WHERE [조건]];
      - WHERE 절을 생략하게 되면 전체 행의 값이 변경된다. 
      따라서 형식은 선택이나 반드시 사용하는 것이 중요하다.
      - 참조 무결성 조건에 주의하라.
        
= UPDATE문을 이용한 데이터 변경

-- 실습1) DEPT1 테이블의 부서번호가 20인 부서의 위치(LOC)를 '시청역부근'으로 수정

UPDATE DEPT1
SET LOC = '시청역부근'
WHERE DEPTNO = 20;


-- DEPT1테이블의 부서번호가 10인 부서의 위치(LOC)를 '서울'로 수정

UPDATE DEPT1
SET LOC = '서울'
WHERE DEPTNO = 10;


-- DEPT1테이블의 지역을 모두 '서울'로 수정

update DEPT1
SET LOC = '서울';
SELECT * FROM DEPT1 ;

둘다 COMMIT 해주어야함.


-- EMP1테이블의 사원번호가 7844인 사원의 부서번호와 직무(JOB)를 사원번호가 7782인 사원과 같은 직무와 같은 부서로 배정하라

update EMP1
SET DEPTNO = (SELECT DEPTNO
		      FROM (SELECT DEPTNO FROM EMP1
			  WHERE EMPNO = 7782) TEMP),
       JOB = (SELECT DEPTNO
		      FROM (SELECT DEPTNO FROM EMP1
			  WHERE EMPNO = 7782) TEMP)
WHERE EMPNO = 7844;


-- 사원번호가 7934인 사원의 급여와, 직무를 사원번호가 7654인 사원의 직무와 급여로 수정

UPDATE EMP1
SET SAL = (SELECT SAL
		   FROM (SELECT SAL FROM EMP1
		   WHERE EMPNO = 7654) T),
    JOB = (SELECT T.JOB
		   FROM (SELECT JOB FROM EMP1
		   WHERE EMPNO = 7654) T)
WHERE EMPNO = 7934;


다중 INSERT

insert into profit values(5005, 'kWON', 't-38', 190, 110, 140, 260),
						 (5006, 'kANG', 'A-49', 190, 110, 140, 260),
                         (5007, 'LEE', 'P-02', 190, 110, 140, 260);

한번에 3개가 입력이 된다.

  • 여러 레코드(튜플) 저장할 때 사용한다.

ALTER TABLE

-- 테이블 수정 ALTER TABLE

alter table PROFIT ADD primary key(PNO);
DESC PROFIT;


-- 오라클에 Merge라는 명령은 테이블에 이미 해당 키가 존재하면 수정한다.
-- 비슷한 기능을 하는 insert

insert into profit
values (5005, 'kWON', 't-38', 190, 110, 140, 260)
on duplicate key update
pname='koo',
profit_no = 't-39',
first_QUARTER  = 180,
second_QUARTER = 110,
third_QUARTER  = 130, 
fourth_QUARTER = 260;

이렇게 데이터를 수정할 수 있다.


DELETE

형식 : DELETE 테이블

[WHERE 조건] ;

  • WHERE절이 없는 경우 테이블 내의 모든 레코드가 지워지므로 WHERE절이 반드시 있는 것이 중요
  • 참조 무결성 제약 조건에 주의
  • 하나 이상의 ROW가 삭제 가능
  • 테이블의 데이터만(레코드만) 삭제하는 명령으로 테이블은 그대로 남아 있음
  • FROM절은 생략가능
  • DELETE로 TABLE의 컬럼을 삭제할 수는 없다.

-- EMP1 테이블에서 7782의 사원번호인 사원정보를 모두 삭제
delete FROM EMP1
WHERE EMPNO = '7782';


-- EMP1 테이블에서 직무(JOB)가 'CLERK'인 사원들의 정보를 모두 삭제
delete FROM EMP1
WHERE JOB = 'CLERK';


-- EMP1테이블의 모든 정보를 삭제
delete FROM EMP1;


-- 'ACCOUNTING'부서명에 대한 부서코드를 DEPT1테이블에서 검색한 후 해당 부서코드를 가진 사원의 정보를 EMP1테이블에서 삭제

DELETE FROM EMP1
WHERE DEPTNO
=(SELECT DEPTNO
  FROM DEPT1
  WHERE DNAME='ACCOUNTING');

-- DEPT1 테이블에서 부서의 위치가 'NEW YORK'인 부서를 찾아 EMP1테이블에서 그 부서에 해당하는 사원을 삭제하시오.

DELETE FROM EMP1
WHERE DEPTNO
=(SELECT DEPTNO
  FROM DEPT1
  WHERE LOC='NEW YORK');

0개의 댓글