목표 : 자바를 이용해서 (변수)의 현재 날씨를 확인하세요.준비 : 위경도 엑셀데이터를 MySQL에 구축하기1. 구를 입력하세요.
[예, 종로구, 수영구]2. 동을 입력하세요
[예, 구에 대한 동]
=> 부전동process : 부전동에 대한 위경도를 DB 조회하기3. URL 요청 (위경도 받기)
=> url 요청 [서비스키, 시간, 위경도]4. 파싱
=> 파싱 (t1h) - Class DTO 만들고, Gson으로 파싱하기
콘솔 : 21.5 출력
CSV로 테이블 생성하기
DB구축 요렇게
내가 필요한 것만.
프로젝트 생성
weather / java / gradle / groovy
의존성 세팅
implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.17.0’
JavaScript
복사
패키지는 항상 꼭 만들어 줘야된다.
구를 입력하세요
구를 입력하세요랑 예시까지 넣어주고
Scanner 생성 하고 nextLine()
db / util 패키지 생성
의존성 추가
implementation 'mysql:mysql-connector-java:8.0.33'
JavaScript
복사
DBConnection 생성
Connectgion은 pooling 안되니까 연결할 때 마다 생성해야 된다.
코드
MyHttp 생성
HttpClient 코드
DAO 패키지 생성
WeatherDAO 동찾기
List
weatherDTO 위경도 찾기
위경도는 두개의 값이 있으므로 클래스로 받자.
LoDTO 생성
쿼리 만들기
PreparedStatement 사용
동찾기 코드
테스트 코드 작성
테스트 코드
위경도 찾기
위경도 찾기 코드
테스트 코드
메인메서드 수정
1. 객체 초기화
2. 프로세스 시작
3.
JavaScript
복사
WeatherVO만들기
weatherVO 코드
메인 메소드 전체 코드
package shop.mtcoding.weather;
import com.google.gson.Gson;
import shop.mtcoding.weather._core.data.WeatherDTO;
import shop.mtcoding.weather._core.data.WeatherVO;
import shop.mtcoding.weather._core.db.DBConnection;
import shop.mtcoding.weather._core.util.MyHttp;
import shop.mtcoding.weather.dao.WeatherDAO;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1. init 객체 초기화
Scanner sc = new Scanner(System.in);
WeatherDAO dao = new WeatherDAO(DBConnection.getInstance());
// 2. 프로세스 시작
System.out.println("1. 구를 입력하세요");
System.out.println("[종로구, 수영구, 부산진구]");
String gu = sc.nextLine();
List<String> dongs = dao.동찾기(gu);
System.out.println("2. 동을 입력하세요");
dongs.forEach(s -> System.out.print(s+" "));
System.out.println();
String dong = sc.nextLine();
Map<String, String> los = dao.위경도찾기(dong, gu);
WeatherVO vo = new WeatherVO("20240607", "1600", los.get("nx"), los.get("ny"));
try {
String responseBody = MyHttp.get(
vo.uri,
vo.serviceKey,
vo.baseDate,
vo.baseTime,
vo.nx,
vo.ny
);
Gson gson = new Gson();
WeatherDTO dto = gson.fromJson(responseBody, WeatherDTO.class);
System.out.println("현재 온도 : "+dto.response.body.items.item.get(3).obsrValue);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
}
JavaScript
복사