웹 어플리케이션 서버(WAS)

Jan 30, 2024
웹 어플리케이션 서버(WAS)

Fake Api

https://jsonplaceholder.typicode.com/
notion image
/users 에 들어가면 많은 유저 정보들이 있는데, https://jsonplaceholder.typicode.com/users/1 라고 입력하면 1번째 유저 정보만 표시된다. 이런 정보들을 자바에서 다운받아 볼 것!
notion image

 
//실습 예제 파일
 

+) JSON Viewer (크롬 확장 프로그램)

크롬 확장 프로그램 "JSON Viewer" 이 확장 프로그램은 JSON 형식의 코드를 예쁘게 보여주는 기능을 제공
💡
JSON = JavaScript Object Notation
notion image
//JSON Viewer 적용 전
notion image
//JSON Viewer 적용 후
 

웹 어플리케이션 서버

notion image
자원명이 없다!!! .html이 없다!!! 확장자가 없는 것 = ‘식별자’ 요청이라고 함. 이런걸 바로 '웹 애플리케이션 서버' 라고 한다. 일반적인 웹서버랑 다름.
 

[ 일반적인 웹서버 ] = 정적인 콘텐츠 제공

웹 페이지나 파일을 저장하고, 클라이언트(웹 브라우저)로부터 HTTP 요청을 받아 해당 파일을 전송하는 역할. 주로 정적인 콘텐츠(HTML, CSS, 이미지 파일 등)를 제공하는데 사용된다. 클라이언트로부터 요청을 받으면 해당 파일을 찾아서 전송하고, 클라이언트는 받은 파일을 표시하여 웹 페이지를 보여주는 용도.
💡
파일을 전송하는 기능에 초점! URL 뒤에 .html 같이 자원명을 붙임
 

[ 웹 어플리케이션 서버 ] = 동적인 콘텐츠를 생성·처리 ✓

웹 애플리케이션을 실행하고 관리하는 역할. (웹 애플리케이션 = 동적인 콘텐츠를 생성하고 데이터베이스와 상호작용하는 등의 작업을 수행) 클라이언트로부터 받은 요청을 처리하여 동적인 콘텐츠를 생성하고, 그 결과를 클라이언트에게 전송한다. ex) 사용자가 로그인을 요청하면 웹 애플리케이션 서버는 해당 요청을 처리하여 인증을 수행하고, 로그인 결과를 클라이언트에게 알려준다.
💡
동적인 처리란? 웹 애플리케이션 서버가 클라이언트의 요청에 따라 데이터를 가공하고 동적인 콘텐츠를 생성하는 과정. 아래는 예시
notion image
 

 
💡
* 확장자가 있다는 말은, 자원을 찾으면 자원을 버퍼에 담아서 준다는 뜻 * 확장자가 없다는 말은, if (/users=1) 뭐 이런게 작성되어 있다는 뜻.
즉, 개발자가 프로그램을 개조한 것. 우리가 공부하는 건 이런 것이다 ㅠ.ㅠ
 

인터넷에서 파일 다운로드 하기 (HTTP로 다운) - http 통신 실습

프로젝트 생성 및 라이브러리 다운

[ 프로젝트 생성 ]
notion image
먼저 프로젝트 생성
 

[ 라이브러리 다운 ]
https://mvnrepository.com/ 에서 jackson 검색
notion image
notion image
복사, 붙여넣기
notion image
notion image
라이브러리 사용 준비 완료!
 

[ 패키지 생성 ]
notion image
내가 코딩을 할거면 src (.java파일들이 모여있는 곳)으로 아주 당연히... 가야함
resources는 자바 파일이 아닌 모든 것들. (동영상, 이미지, 텍스트 등)을 넣는 곳
notion image
패키지 이름은 자기 사이트 도메인 주소를 거꾸로 + 프로젝트명 (무조건 고정!!!!!!)
 

전체 코드

package com.metacoding.myhttp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MyApp { public static void main(String[] args) { try { URL url = new URL("https://jsonplaceholder.typicode.com/todos/1"); //소켓을 만들기 위한 객체를 만든 것 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //openConnection - 서버소켓 연결. 즉, conn은 소켓임 //소켓이 만들어지고 accept만 된것. 근데 다만, http프로토콜이 적용된 소켓이란 말! //이 객체안에 약 8000개 가량의 http프로토콜이 적용된 것 BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()) ); //그냥 채팅처럼 메세지를 교환하는게 아니라 프로토콜을 통해서 통신한다는 말 //그럼 버퍼드 리더를 달아야지 //버퍼달아서 소켓 연결한 것 String download = ""; while (true) { String line = br.readLine(); //역슬래쉬 \n 때문에 while 건 것 if (line == null) break; //readLine을 다 읽으면 멈춘다는 말 download = download + line; //일케하면 다운로드에 모든 라인을 담을 수 있다는 말 } System.out.println(download); } catch (Exception e) { throw new RuntimeException(e); } } }
notion image
자바로 이 정보들을 다운 받을 수 있는 코드를 알아보았다. 그러나... 이 코드는 알 필요 x 안 씀! rest template 이거 쓰는데… 프레임워크에서 쓸 수 있으니 그때 배우자!
 

 
💡
통신- 남의 컴퓨터의 하드에 들어가는 것 (자료 찾을라고)
이런 통신 코드에는 다 스레드가 있다!
 
 
Share article

codingb