Search

#095 #공공데이터로 날씨 프로그램 만들기

목표 : 자바를 이용해서 (변수)의 현재 날씨를 확인하세요.준비 : 위경도 엑셀데이터를 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
복사

선생님 수업 깃 주소

weather-app
kdit-2024