봉봉의 개인 블로그
2017-06-02-P 본문
Networking
TCP 방식과 UDP
Socket : 통신을 할때 데이터 덩어리
URL : 주소 보다 큰 개념
https : 프로토콜
(www.naver.com) 호스트네임
URLConnection : 원격 연결 느낌 (DB Connection)
URLConnection 이용해서 데이터 정보받아오기
위와 같은 파일이 있다
12~13번 문과같이 URL 을 받아오고 그 받아온 URL을 URLConnection 에 담습니다.
그리고 만약에 그 url 안에 있는 Connection 이 만약 http 형식으로 받을수 있다면 16번과 같이 형변환을 해서 conn 에 담습니다
그리고 그 받아온 데이터를 InputStreamReader 를 통해서 읽어 들이기 위해서 conn 주소값 안에 있는걸 getInputStream 으로 불러옵니다. 그후 그값을 22번문에서와 같이 Buffer를 이용해 모아서 담아줍니다
그후 while문을 통해서 bin안에 엔터키가 나올때까지를 current안에 담고 이값이 null 이 아니면 String 타입의 urlString 안에 담아줍니다.
그리고 29번에서의 문과 같이출력합니다.
*데이터를 받아올경우 파싱해서 내가 사용하려는 형태와 용도로 사용하여야한다.*
*****예제*****
미세먼지 농도 받아오기
먼저 위 사진과 같이 공공 api 를 받아옵니다.
그후 아래 사진과같이 파일들을 생성해줍니다.
그후 먼저 공공 api 받아온것을 airservice 안에 적어줍니다
위 사진과 같이 적어줍니다 여기서 21~27까지는 형식에 맞게끔 작성을해주고 그 작성한것을 28번에 URL으로 해서 받아와줍니다
그후 url 주소값안에 openConnerction 을 통해서 host 안에 값을 HttpURLConnerction 으로 변환하여 conn안에 담아줍니다.
30번 줄에서는 get 방식으로 요청받습니다.
31번 줄에서는 프로퍼티 타입은 json 방식으로 받습니다.
그리고 if 문을에서 만약 conn안에 담긴값을 요청하였을때 200번대 300번대가 나오면 rd 안에 BufferedReader을 통해 getInputStream 에 값들을 InputStreamReader 를통해 읽은걸 BufferedReader 로 생성된 객체 rd 안에 담아줍니다.
그리고 else 문에서는 getErrorStream 에 값들을 InputStreamReader 를통해 읽은걸 BufferedReader 로 생성된 객체 rd 안에 담아줍니다.
그후 39번 줄에서 StringBuilder 타입의 객체의 주소값을 할당받은 객체참조변수 sb를 만들어줍니다.
그후 String타입의 line 안에 rd 안에 있는 값이 readLine(엔터키가 나올때까지)의 값을 담습니다. 그값이 null 일때 까지 sb 주소값안에 line 의 값을 추가해줍니다. 그후 객체를 종료하고 sb.tostring 의 값을 리턴해줍니다.
그후 이걸 그냥 화면에 뿌려주기에는 문제가 있다 이거는 xml 방식이기 때문에 안에 내용을 item Dto 를 이용해 set해서 데이터를 뿌려 주어야 한다. 같은 Dao airservice 안에 아래와 같이 메서드를 하나더 선언해줍니다.
이런식의 메서드를 선언해줍니다 이 메서드는 Dto 셋한 객체의 주소값들을 리턴해줘야하기 때문에
list<item> 으로 리턴해줍니다 그다음 26번 줄에서 ArraryList 객체를 만들어준다음 27번줄에서
xmlDownload 의 메서드에 form 에서 넘어온 값을 받아서 xml 에 넣어서 메서드를 호출합니다. 그다음 그 리턴받은 값을 String형태의 xml 에 담아줍니다.
그다음 28번줄에서 DocumentbuilderFactory를 통해서 Documentbuilder 의 객체를 만드는 공장 ?같은걸 만든후
29번에서 그 공장?같은걸 통해서 Documentbuilder의 객체를 만들어서 주소값을 할당시켜 줍니다.
그리고 inputstream 을 통해서 xml 문서 안에 있는값을 UTF-8형식으로 해서 불러오고 난다음 그걸 builder.parse 를 통해서 파싱해줍니다 그리고 파싱된걸 Document 타입의 객체 doc 안에 담아줍니다.
그다음 nodelist 타입의 nodelist 변수를 선언하고 그안에 doc 안에 item 이라는 태그의 값을 담아줍니다. 그후
for 문을 통해서 그 nodelist 의 길이만큼 반복하여 item Dto 의 객체를 새로 만들고 그안에 태그 에임이 "" 안에 값인것중에 item(0) 첫번째인것 안에 내용을 set 한 후에 itm 의 주소값을 list 에 추가해준다음 그 값들의 주소값을 리턴해줍니다.
그다음 화면에서 값을 넘겨주기 위해서 form 을 아래와 같이 만들어 줍니다.
위 코드와 같이 화면을 만들고 그 값을 air.jsp 로 값을 넘겨줍니다.
air.jsp 에서는 이제 xml 파일을 파싱해서 java 식으로 바꾼 값을 뿌려주는 역활을한다.
위와같이 되어잇다 여기서는 airservice타입으로 선언된 as 안에 getitemlist 메서드를 호출하고 그값을 list 안에 담아줍니다 그후 33~60번까지의 출력문을 총해 list 안에 있는 값들을 화면에 뿌려줍니다.
'학원에서 배운것들 > TEA - P' 카테고리의 다른 글
2017-06-08-P (0) | 2017.06.08 |
---|---|
2017-06-07-P (0) | 2017.06.07 |
2017-06-01-P (0) | 2017.06.01 |
2017-05-31-P (0) | 2017.05.31 |
2017-05-26-P (0) | 2017.05.26 |