<%@ 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")
클릭 후 변화
<%@ 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>
<%@ 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("이름을 입력하시오");
아무개를 적지 않아도 작동함.
<%@ 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
다형성의 활용
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 키워드를 사용하여 선언해야 함
- 추상 클래스의 모든 메서드를 추상으로 사용할 필요는 없음
-> 추상 클래스에 일반적인 메서드가 포함될 수도 있음- 클래스의 메서드 중 하나가 추상 메서드이면 해당 클래스는 추상 클래스여야 함
- 추상 메서드를 선언하면 자식 클래스에서 해당 메서드를 재정의해야 함
-> 추상 클래스를 상속하는 경우 메서드 재정의는 필수
-> 상속받은 클래스와 자식 클래스가 추상 클래스라면 메서드를 재정의하지 않아도 됨- 현재 클래스가 상위 클래스처럼 추상적인 경우에는 상위 클래스의 메서드를 재정의할 필요
없음
형식 : 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 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 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 테이블
[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');