참고 사이트
https://blueyikim.tistory.com/2199
https://kkh0977.tistory.com/562

HttpURLConnection
  - Java에서 제공하는 HTTP 프로토콜을 이용한 통신을 위한 클래스입니다.
  - URL을 통해 서버와 연결을 만들고, 데이터를 전송하고 수신할 수 있습니다.
  - 다양한 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)를 지원하며, 요청 헤더(header)와 요청 본문(body)을 설정할 수 있습니다.
    - 또한, 서버로부터 받은 응답 코드(response code)와 응답 본문(response body)을 확인할 수 있습니다.

DataOutputStream
  - 자바에서 데이터를 파일에 저장하거나 네트워크로 전송하기 위해서는 데이터를 바이트 스트림으로 변환해야 합니다.
  - 이때 DataOutputStream 클래스를 사용하면 간단하게 데이터를 바이트 스트림으로 출력할 수 있습니다.
  
  
- 서버와 통신할때 동작 방식
  - 3~6단계는 선택사항
  - 5~6단계는 서로 바꿔서 사용 가능
1. URL 객체 생성
2. URL에서 URLConnection 객체 얻기
  - openConnection()메서드는 실제 네트워크 연결을 설정하지 않는다.
  - URLConnection 클래스의 인스턴스를 반환한다.
  - 실제 네트워크 연결
    - connect()메서드가 호출 될때
- 헤더 필드를 읽거나 입력스트림/출력스트림 가져올때
3. URLConnection 구성
- 클라이언트와 서버간 통신을 할때 다양한 옵션을 설정할 수 있다.
  - setConnectTimeout(int)
    - 연결 시도 시 대기 시간을 설정하는 데 사용됩니다.
- 설정한 시간내에 연결이 되지않으면 연결 시도는 실패하게 됩니다.
  - setDoOutput(boolean)
    - 서버에 데이터를 보낼지 여부 
- true를 설정하면 URLConnection이 출력 스트림을 사용하여 서버로 데이터를 전송할 수 있습니다.
  - setRequestProperty(String key, String value)
    - HTTP 요청 헤더에 특정 속성을 추가하는 데 사용됩니다.
- setRequestProperty() 메서드를 사용하여 HTTP 요청 헤더에 속성을 추가하면, 이 속성이 HTTP 요청 헤더에 포함되어 서버에 전송됩니다.
- 첫 번째 인수는 HTTP 요청 헤더의 속성 이름이고, 두 번째 인수는 해당 속성의 값을 나타냅니다.
- ex) setRequestProperty("Accept-Charset", "UTF-8");
  - setRequestMethod(String method)
    - HTTP 요청 방법(Method)을 설정하는 데 사용됩니다.
- 일반적으로 사용되는 방법으로는 GET, POST, PUT, DELETE 등이 있습니다.
4. 헤더 필드 읽기
  - 연결 성공후 서버에서 URL요청을 처리하고 메타데이터(헤더 필드)와 실제 콘텐츠로 구성된 응답을 받습니다.
  - 헤더 필드는 키:값 쌍의 모음입니다.
  - 헤더 필드는 서버에 대한 정보, 상태 코드, 프로토콜 정보등을 나타냅니다.

5. 입력 스트림 가져오기 및 데이터 읽기
6. 출력 스트림 가져오기 및 데이터 쓰기

7. 연결종료
  - InputStream or OutputStream 객체에서 close()메서드를 호출하면 URLConnection 인스턴스와 연결된 네트워크 리소스가 해제됩니다.
  

'Java' 카테고리의 다른 글

[Java] Static 정리  (0) 2023.04.10
클래스(class)  (0) 2023.04.06
접근 제어자  (0) 2023.04.06

Static
  - 정적필드(Staic변수), 정적 메서드(Static 메서드)이 둘을 정적 멤버(클래스 멤버)라고 부른다.
  - 객체(인스턴스)에 소속된 멤버가 아닌 클래스에 고정된 멤버를 의미한다.
  - 객체를 생성하지 않고 Static 자원에 접근이 가능하다.
    - Static 메모리 영역에 이미 할당되어 있으므로 객체 생성을 하지 않아도 접근 가능
    ex) new 연산을 통해 객체 생성없이 다른 클래스에서 변수나 메서드에 접근가능

Static 변수(정적 변수)

  - 멤버 변수에 static을 붙이게 되면 static 변수, 정적 변수, 클래스 변수라 한다.

  - 한 클래스에서 공통적인 값을 유지해야할때 사용한다.
  - 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수
  - 보통 static 변수는 변하지 않는 값으로 사용되므로 아래와 같이 사용된다
    - public static final 변수 이름 = "값"; 

'Java' 카테고리의 다른 글

[Java] HttpURLConnection이란?  (0) 2023.04.13
클래스(class)  (0) 2023.04.06
접근 제어자  (0) 2023.04.06

클래스(class)
클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성됩니다
필드 : 클래스에 포함된 변수
메소드 : 어떠한 특정 작업을 수행하기 위한 명령문
---------------------------------------------------------------------------------------------------------------------------
인스턴스(instance)
- 선언된 해당 클래스 타입의 객체를 인스턴스라고 합니다.
- 인스턴스란 메모리에 할당된 객체를 의미합니다.
- 하나의 클래스로부터 여러 개의 인스턴스 생성이 가능합니다.
- 생성된 인스턴스는 독립된 메모리 공간에 자신만의 필드를 가질 수 있습니다.
- 하지만 해당 클래스의 모든 메소드는 해당 클래스에서 생성된 모든 인스턴스가 공유하게 됩니다.
---------------------------------------------------------------------------------------------------------------------------
메소드(method)
형식)
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
    // 구현부
}

1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시합니다.
2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다.
3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시합니다.
4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다.
5. 구현부 : 메소드의 고유 기능을 수행하는 명령문의 집합입니다.

자바에서는 하나의 클래스에 같은 이름의 메소드를 둘 이상 정의할 수 없습니다.
하지만 메소드 오버로딩(overloading)을 이용하면, 같은 이름의 메소드를 중복하여 정의할 수 있습니다.
메소드 오버로딩이란 매개변수의 개수나 타입을 다르게 하여 같은 이름의 또 다른 메소드를 작성하는 것입니다.
---------------------------------------------------------------------------------------------------------------------------
ex) 클래스 인스턴스 예제
클래스(class) -> 차(Car) : 설계도

필드(field)
- car.modelName = "람보르기니"
- car.modelYear = 2016
- car.color = "주황색"
- car.maxSpeed = 350

메소드(method)
- car.accelerate()
- car.brake()

인스턴스(instance)
- 내 차(myCar) : 설계도에 의해 생산된 차량
- 친구 차(friendCar) : 설계도에 의해 생산된 또 다른 차량

즉, 자동차 인스턴스는 모두 위와 같은 필드와 메소드를 가지게 될 것입니다.
하지만 각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다를 것입니다.

'Java' 카테고리의 다른 글

[Java] HttpURLConnection이란?  (0) 2023.04.13
[Java] Static 정리  (0) 2023.04.10
접근 제어자  (0) 2023.04.06

제어자 
- 클래스, 클래스 멤버 선언시 사용하여 추가적인 의미를 부여하는 키워드를 의미
- 접근제어자, 기타 제어자가 있다
- 기타 제어자는 여러 개 사용 가능
- 접근 제어자는 한개만 사용 가능

접근 제어자
- 클래스, 멤버에서 사용하고 해당하는 클래스, 멤버를 외부에서 접근하지 못하도록 막아주는 역할을 함
- 접근 제어자는 생략이 가능하고 생략시 자동으로 default 지정된다.

 

1) private : 같은 클래스 내에서만 접근 가능
2) default : 같은 패키지 내에서만 접근 가능
3) protected : 같은 패키지 내에서 접근 가능하고, 다른 패키지의 자손 클래스에서 접근 가능
4) public : 모든 곳에서 접근 가능

 

캡슐화
- A객체 내부의 속성이나 행위를 B객체에서 직접 접근할 수 없게 하는 것이다.
  - ex) 비밀번호 클래스의 데이터를 일반사용자 클래스에서 변경하지 못하도록 제한 하는것

접근 제어자 이론 문제

https://rnwns2.tistory.com/141

 

접근 제어자 실습 문제

https://rnwns2.tistory.com/140

'Java' 카테고리의 다른 글

[Java] HttpURLConnection이란?  (0) 2023.04.13
[Java] Static 정리  (0) 2023.04.10
클래스(class)  (0) 2023.04.06

+ Recent posts