수업노트 - GUI, 컨테이너, 컴포넌트, 입출력(IO), Stream, Buffered, 인코딩, jdbc

sanchez9·2023년 8월 28일
0

JAVA 수업노트

목록 보기
15/16
//리스트객체의 모든 요소가 명령문을 실행
리스트객체.forEach(요소->System.out.println(요소));

리스트객체.forEach(요소->
				System.out.println(요소) //명령문
);

***Stream map() 메소드는 return문이 있다.

Stream<String> stream3=list1.stream();
				//return문이 있다.

Stream<String> st0=stream3.map(el->m1()구현);
				//return문이 있다.
Stream<String> st1=stream3.map(A::m1);

System.out.println();

GUI

  • Graphical User Interface
  • 사용자(클라이언트)가 원하는 정보를 얻기 위한 인터페이스
  • 사용자가 편리하게 입출력할 수 있도록 그래픽으로 화면을 구성
  • 마우스나 키보드로 입력받을 수 있도록 지원하는 사용자 인터페이스
  • 자바 언어에서 GUI 프로그램을 작성할 수 있다.
  • 컴포넌트들로 구성 → “이미 만들어진… 제공되어진…”
    • Component→Android, IOS
  • AWT 패키지와 Swing 패키지

AWT(Abstract Window Toolkit

  • 운영체제가 제공하는 자원을 이용하여서 컴포넌트를 생성
    • 자바로 컴포넌트 작성되어 있기→ 어떤 플랫폼에서도 일관된 화면 작성 가능

Swing의 특징

  • 텍스트 입력이나 Password 동작과 같은 복잡한 기능들이 제공
  • 자바 API
    • 이미지, 애니메이션 등 기능을 제공
  • 데이터 전송
    • 복사, 붙이기 등의 데이터 전송 기능 제공.

컨테이나와 컴포넌트

  1. 컨테이너
    1. 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트
    2. 다른 컨테이너에 포함될 수 있음
      1. AWT 컨테이너 : Panel, Frame, Applet, Dialog, Window
      2. Swing 컨테이너 : JPanel, JFrame, JApplet, JDialog, JWindow
  2. 컴포넌트 → 이미 만들어진
    1. 반드시 컨테이너에 포함되어야 화면에 출력될 수 있는 GUI 객체
    2. 모든 GUI 컴포넌트가 상속받는 클래스 : java.awt.Component
    3. 스윙 컴포넌트가 상속받는 클래스 : javax.swing.JComponent
    1. 컨테이너 생성 → 2.컴포넌트 추가 (순서 주의) → 3.컨테이너 화면 setView(컨테이너) 추가

Swing 클래스 계층구조

  • Component : 화면에 표시되어서 사용자와 상호작용하는 시각적인 객체를 나타냄
  • Container : 내부에 다른 컴포넌트를 추가할 수 있는 기능을 제공 → add()를 사용하면 컨테이너 안에 컴포넌트를 추
  • Window : border, title등 가지고 있는 윈도우를 정의
  • Frame : 자바 GUI (AWT)
  • JFrame : Frame → 스윙의 맞추어 변경 **화면 단위

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x표시를 클릭하면 화면이 종료

기초 컴포넌트

  • 레이블(label): 편집이 불가능한 텍스트를 표시
    • 수정불가, 표시만

      JLabel label = new jLabel(Hello World);
  • 버튼(button): 편집이 불가능한 텍스트를 표시
    • 이벤트 구현

      JButton btn = new JButton(”클릭”);
  • 텍스트 필드(TextField): 입력이 가능한 한 줄의 텍스트 필드
    • 입력

      JTextField text = new JTextField(20);
      JTextField // 기본적인 텍스트 필드 → <input type=”text”>아이디</input>
      JPasswordField // 사용자가 입력하는 비밀번호 → <input type=”password”>비밀번호</input>
      JComboBox // 사용자가 항목 중에서 선택할 수 있음 → <select>출신지</select> → 콤보상자

컨테이너와 배치 개념(layout)

  • 컴포넌트는 컨테이너에 부착 → 화면 표시
  • 컨테이너마다 하나의 배치 관리자가 존재 → 기본
  • 컨테이너의 크기가 변하면 내부 컴포넌트들의 위치와 크기를 모드 재 조절하고 재배치해야함
  • 기본이 FlowLayout
// JPanel 패널에 BorderLayout 배치 관리자를 설정하는 예시
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
  1. FlowLayout 배치 관리자
    1. 기본배치 → FlowLayout으로 지정한다
    2. 컴포넌트를 수평 방향으로 배치하는 관리자
    3. 왼쪽에서 오른쪽, 위에서 아래로 순차적으로 배열
  2. BorderLayout 배치 관리자
    1. 컴포넌트를 추가할 때 방향을 지정하여 추가할 수 있는 기능을 제공
    2. 배치방향 : 동,서,남,북,중앙
  3. GridLayout 배치 관리자
    1. 격자모양, 미리 격자의 갯수를 정한다
    2. 컴포넌트를 행과 열을 가진 배열 형태로 배치
    3. 사각형 격자(그리드)로 분할하고 각 셀에 컴포넌트 하나씩 배치
      1. 생성자에 행수와 열수 지정
      2. 셀에 왼쪽에서 오른쪽으로, 다시 위에서 아래로 순서대로 배치
  4. 절대 위치(absolute)로 배치하기
    1. 배치 관리자가 없는 컨테이너에 컴포넌트를 삽입할 때
    2. 프로그램에서 컴포넌트의 절대 크기와 위치 설정
    3. 컴포넌트들이 서로 겹치게 할 수 있음

***Servlet, Spring Security, javascript, jQuery

***이벤트(Event) → 어떠한 동작(행위): 마우스, 키보드, window

***이벤트 핸들러 → 이벤트가 발생이 되면 처리되는 콜백함수(메소드)

***이벤트 리스너 → 미리 지정한 이벤트가 발생이 되면(듣고있다가?) 처리하는 주체 → 이벤트 핸들러 연결


IO → 입출력(input과 output) → java.io

  • 입력: 키보드로 텍스트를 입력 → System.in
  • 출력: 모니터로 입력한 텍스트를 출력 → System.out
  • 두 포인트 간의 데이트럴 주고 받는 것
  • 데이터 스트림, 직렬화 및 파일 시스템을 통한 시스템 입력 및 출력
  • java I/O 패키지 안에는 파일 입출력과 관련된 클래스
  • 입출력은 반드시 예외처리 설정 → IOException
  • 반드시 .close();

스트림(Stream)이란?

  • 데이터 운반(입출력)하는데 사용되는 연결통로
  • 물의 흐름(Stream)
  • 단방향(동시x) → 입력, 출력 2개가 필요
입력출력
입력스트림(stream) →← 출력스트림(stream)
write()read()
  1. 바이트 단위 스트림 → 숫자(정수)
    1. InputStream, OutputStream → 바이트 기반 입출력 스트림의 최상위 클래스로 추상 클래스
    2. FileInputStream,,, FileOutputStream
  2. 문자(Text) 단위 스트림
    1. Reader, Writer → 문자(Text) 데이터 기반 입출력의 최상위 클래스
    2. FileReader, FileWriter
  • 콘솔 입출력

    • 입력
    • 출력
    • 파일
  • 실제 프로젝트 파일 처리시 권한을 설정

    • 파일 위치의 디렉토리(폴더)

BufferedOutputStream (Buffer → 임시 저장소)

  • 내부 버퍼를 만들어 내부 버퍼의 크기만큼 데이터를 한 번에 저장한 다음 내부 버퍼로부터 1byte의 데이터를 읽어온다
  • BufferedOutputStream은 내부 버퍼에 있는 데이터를 파일로 모두 송출한다(얼마가 남았든)
  • 이 버퍼가 쌓인 데이터를 모두 보내고 또 보내는데 이 버퍼에 데이터 가득 많이 안 찬 상태에서는 안보내고, 그대로 버퍼안에 쌓이게 됨. 이럴 때 이 남은 버퍼를 모두 비워주는 역할

BufferedOutputStream은 기존에 있는 자료를 읽어올 때 쓰기 때문에 flush(비운다)가 필요없다.


인코딩(encoding)

  • 인코딩은 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 말한다 (컴퓨터 이해)
    • UTF-8 → 웹 기본 인코딩

디코딩(decoding)

  • 복호화

  • Spring Security 비밀번호를 반드시 암호화

  • 비밀번호 처리 : 암호화 → 복호화(암호화 된 것을 원래 비밀번호 변환)


1-1 네트워크 프로토콜

  • 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.

1-2 HTTP

  • HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란(보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.

1-3 PORT(통로)

  • 포트(port)는 “논리적인 접속장소”이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다
    • 예) FTP(21), 인터넷(80), SSH(22)

1-4 WAS(Web Application Server)

  • 웹 브라우저와 같은 클라이언트로부터 웹 서버가 요청을 받으면 어플리케이션에 대한 로직을 실행하여 웹 서버로 다시 반환해주는 소프트웨어입니다. 웹서버와 DBMS 사이에서 동작하는 미들웨어로써, 컨테이너 기반으로 동작합니다.
    • 실제 말하는 서버(클라이언트의 요청 정보를 처리)

1-5 tomcat

  • 톰캣은 아파치 소프트웨어 재단의 웹 어플리케이션 서버(WAS)로서, 자바 서블릿을 실행하고 JSP코드가 포함되어 있는 웹페이지를 만들어준다. 자바 서블릿과 JSP규격의 ‘참조용 구현’으로 평가되고 있는 톰캣은 웹서버에서 넘어온 동적인 페이지를 읽어들여 프로그램을 실행하고 그 결과를 다시 html로 재구성하여 아파치에게 되돌려 준다.
    • JSP(MVC Model2 View 역할), Servlet(MVC Model2 Controller역할)

URL 이란? → 자원(resource → 이미지, 동영상, 파일, 오디오…)의 경로

  • URL(Uniform Resource Locator): 인터넷 상의 자원(리소스)에 대한 주소를 의미한다.

  • 웹 브라우저에 직접 URL을 입력

  • 링크(하이퍼링크)를 클릭하면 웹 브라우저가 해당 URL을 브라우저에 로드

  • 하이퍼링크 → 순서와 상관없이 사용자 원하는 자원으로 이동

  • 하이퍼텍스트 : Hyper Text

  • 하이퍼텍스트를 만드는 언어 → HTML

  • HTTP(HyperText Transfer Protocol) → web 기본 프로토콜

URL

프로토콜://IP:포트/자원

http://주소/springMVC1206/join

https://www.naver.com/

  • 프로토콜 식별자

    • 인터넷 상의 자원을 가져올 때 사용되는 통신 프로토콜 이름
    • 웹 → HTTP(HyperText Transfer Protocol)라는 프로토콜 (80)
    • FTP(File Transfer Protocol) : 21 → 파일 처리
    • SSH 22 → AWS EC2 Server 접속 -PuTTY(window), Mac(터미널)
  • war 파일

  • 절대경로 → 어디서든 접근 가능

  • 상대경로 → 기준 위치(서버 기준) 에 부터 상대 위치

  • URL 클래스

    • URL 클래스는 웹상의 자원을 지정하는 URL 정보
    • URL(String url) : 자원에 대한 URL 객체 생성
    • URL(String Protocol, String host, int port, String file)
      • 프로토콜 식별자 protocol, 호스트 주소 host, 포트번호 port, 파일이름 file이 지정하는 자원에 대한 URL 객체 생성

JDBC (Java Database Connectivity)

프로그램언어 → 드라이버 ← 데이터베이스 관리 시스템 (DBMS) → DB

   Java           JDBC Driver       Oracle, Mysql, MsSql, Access
  • 데이터베이스
    • 공용 데이터들의 집합
    • 데이터의 저장, 검색, 갱신 → 데이터를 고도로 조직화하여 저장
  • 데이터 베이스 관리 시스템 (DBMS)
    • 데이터베이스를 관리하는 시스템
  • 관계형 데이터베이스(RDBMS) Relation Databases Managements System
    • Oracle, Mysql, MsSql, Access
    • 테이블간의 관계, 규칙(제약조건), C(생성)R(조회)U(수정)D(삭제)
  • SQL(Struct Query Language) → RDBMS 데이터베이스 프로그래밍 언어
    1. DDL → 테이블 생성
    2. DML → CRUD
    3. DCL → 제어, 권한
    4. TCL → 트랜잭션
  1. 데이터베이스 → DB(DBMS)
    1. 데이터베이스는 컴퓨터에 저장되는 구조화된 정보 또는 데이터의 조직화 된 모음.
    2. 데이터베이스는 일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어된다.
    3. 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 단축하여 데이터 베이스라고도 합니다.
    4. 데이터베이스는 데이터 작성 및 쿼리에 SQL(Structured Query Language)을 사용합니다 → RDBMS
  2. 관계형 데이터베이스(RDBMS)와 종류
    1. 데이터베이스(Database)의 종류는 크게 관계형 데이터베이스(RDB)와 NoSQL(Not Only SQL)로 나뉜다.
    2. RDB 종류 → Oracle, MySQL(Oracle) / MS-SQL(Microsoft) / H2(테스트용) / Maria DB / SQLite(Opensource, 안드로이드 내장)

noSQL(Not Only SQL)

  • 장점 : 대용량 데이터를 다루거나 데이터 분산 처리에 용이, 유연한 데이터 모델링이 가능. Cloud computing에 적합.(AWS)
  • MongoDB → json, XML과 같은 Collection 데이터 모델 구조 사용

  1. Oracle과 MySQL → RDBMS

    1. Oracle
      1. Oracle Corporation이라는 미국의 기업에서 만든 데이터베이스 관리 시스템(DBMS, Database Management System)
      2. 현재 가장 많이 사용하는 Database
      3. MVC Model2
    2. MySQL
      1. MySQL은 전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스
      2. 표준 데이터베이스 질의 언어 SQL을 사용하는 개방 소스의 관계형 데이터베이스 관리시스템(RDBMS)
      3. 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다.
      4. 자바, 펄, php, python 스크립트 등을 위한 응용프로그램 인터페이스(API)를 제공한다.
      5. 무료 프로그램이어서 홈페이지나 쇼핑몰 등등 일반적인 웹 개발에 널리 사용되고 있다.
      6. MVC Model2, Mybatis, JPA, AWS(EC2 → RDS)
      7. Oracle SQL과 유사하다.
      8. Maria DB ← MySQL의 파생 RDMS
  2. SQL

    1. SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
    2. SQL을 표준으로 채택하고 있다.
  3. DDL, DML, DCL, TCL

    1. DDL : 데이터 정의 언어

      1. 테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 데이터 전체 골격을 결정하는 역할을 담당한다.
      2. DDL은 명령어를 입력하는 순간 작업이 즉시 반영(Auto Commit)
      CREATE ****(JDBC)테이블을 생성하는 역할
      ALTER테이블의 구조를 수정하는 역할
      DROP ****(JDBC)테이블을 삭제하는 역할
      RENAME테이블의 이름을 변경하는 역할
      TRUNCATE테이블을 초기화하는 역할
      ALTER컬럼 변경 문법 → 수정(변경)
      ADD COLUMN컬럼을 추가하는 역할
      DROP COLUMN컬럼을 삭제하는 역할
      MODIFY COLUMN컬럼을 수정하는 역할
      RENAME COLUMN컬럼의 이름을 변경하는 역할
      DROP CONSTRAIN컬럼을 제약조건에 기반해서 삭제하는 역할
  • SQL 데이터를 추가할때는 레코드 단위로 추가한다.
    • 레코드 : 행(row). 테이블의 행(row).
  • 컬럼.
    • 컬럼명

b. DML : 데이터 조작 언어

  • 데이터 베이스의 내부 데이터를 관리하기 위한 언어
  • 데이터를 조회, 추가, 변경, 삭제등의 작업을 수행하기 위해 사용 → CRUD
  • DDL과 달리 DML은 적는 즉시 반영(Auto Commit)이 되지 않는다.
  • 실시간으로 테이블에 반영되지 않는다. ***Oracle
  • Commit 명령어를 통해 Transaction을 종료해야 해당 변경 사항이 테이블에 반영 ***Oracle
INSERT테이블에 데이터를 추가하는 역할Create → 회원, 게시글, 상품 추가
SELECT데이터베이스에서 데이터를 검색하는 역할Read → 회원, 게시글, 상품 조회
UPDATE테이블 내에 존재하는 데이터를 수정하는 역할Update → 회원, 게시글, 상품 수정
DELETE테이블에서 데이터를 삭제하는역할Delete → 회원, 게시글, 상품 삭제

c. DCL : 데이터 제어 언어

  • 데이터를 관리 목적으로 보안, 무결성, 회복, 병행 제어등을 정의하는데 사용
  • DCL을 사용하던 데이터베이스에 접근하여 읽거나 쓰는 것을 제한할 수 있는 권한을 부여하거나 삭제
  • 데이터의 정확성을 위한 무결성을 유지
  • 시스템 장애에 대비한 회복과 병행수행을 제어
GRANT권한을 정의할 때 사용하는 명령어
REVOKE권한을 삭제할 때 사용하는 명령어

d. TCL

  • DCL과 비슷, 트랜잭션을 제어할 때 사용
  • 논리적인 작업 단위를 묶어 DML에 의해 조작된 결과를 트랜잭션 별로 제어
  • 트랜잭션(Transaction)
    • 추가, 수정, 삭제 시에 사용됨.
    • 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
  • commit
    • 변경 사항들을 적용.
  • rollback
    • 변경 사항을 취소하고 원래대로 돌려놓음.

Oracle CRUD 정리

--추가, 등록 Create → insert into ~ values

insert into 테이블명(칼럼명1, 칼럼명2,,,) values(값1, 값2,,,);

insert into member0615(userId, userPw, email) values('m1','1111','1@email.com');

--조회 Read → select ~ from ~ where;

select 조회할 컬럼명 from 테이블명;

select * from member0615; -- 기호 * 는 모두 가져오기
select userId from member0615;
select userId, userPw from member0615;
select userId, userPw, email from member0615;

--수정, 변경 Update → update ~ set ~ where

update 테이블명 set 칼럼명1=변경값,,, where 칼럼명=조건;

update member0615 set userPw='2222' where userId='m1';

삭제, 탈퇴 Delete → delete from ~ where

delete from 테이블명 where 컬럼명=조건;

profile
자바를 배우고 있어요

0개의 댓글