브라우저와 WAS(웹 애플리케이션 서버)가 있어야 원격프로그램을 실행할 수 있다.

 

 

1. 프로그램 등록 (@Controller을 클래스에 붙임)

2. URL과 프로그램을 연결 (@RequestMapping을 메소드에 붙임)

-> URL을 입력하면 프로그램이 실행 될 수 있게 함

접근제어자, ststic 유뮤 상관없이 호출 가능 (톰캣서버가 Reflection API을 활용하여 메서드를 호출하기 때문)

 

 

 

- 서버가 제공하는 리소스

 

실행시마다 결과가 변함 -> 동적 리소스(프로그램, 스트리밍)

변하지 않음 -> 정적 리소스(이미지, *.js , *.css, *.html)

 

 

- URL의 정보를 이용

브라우저에 URL을 입력해서 요청을 하면 해당 서버에 있는 Tomcat이 요청을 받아서 HttpServletRequest  객체를 생성하고 정보를 객체에 담는다.

해당 객체를 메소드의 매개변수로 제공하고 메소드 내에서 해당 객체(HttpServletRequest)를 이용함.

 

 

 

- 개념적인 내용

 

1. 클라이언트와 서버

클라이언트(client) : 서비스를 요청하는 애플리케이션

서버(server) : 서비스를 제공하는 애플리케이션

 

클라이언트->요청->서버

서버에서 프로그램 실행->응답->화면

 

2. 서버의 종류

서버의 종류에는 email서버, file서버, web서버 등등이 있음

 

3. 서버의 포트

서버에는 포트가 연결되어 있다. 포트로 서버를 구분할 수 있다.

서버는 포트와 미리 binding 되어있는 상태로 기다리고 있음(listening 하고 있음)

포트번호는 0~1023까지 예약이 되어 있고 이를 제외하면 65535번까지 사용 가능.

 

4. 웹 애플리케이션 서버(WAS)?

웹 애플리케이션 서버(WAS) : 웹 애플리케이션을 서비스하는 서버(Tomcat 같은)

 

클라이언트가 원격 프로그램을 호출하면 WAS에서 프로그램을 실행하고 그 결과를 전송함

 

 

5. Tomcat의 내부구조

 

브라우저에서 서버로 요청이 오면 Thread pool에 대기하고 있던 Thread 중 하나가 요청을 처리하게 된다.

Service 안의 Connector가 요청 종류에 따라 Engine에게 요청을 전달함.

Engine 내에는 여러개의 Host가 존재할 수 있으며(보통은 1개) Host 안에는 Context(스프링 프로젝트)가 여러개 있을 수 있다.

Context(스프링 프로젝트) 안에 Servlet이 존재한다.

 

Thread -> Connector -> Engine -> Host -> Context -> Servlet

 

DispatcherServlet이 Controller를 호출하고(@Controller 애너테이션을 붙인 클래스), 거기에 있는 메소드를 호출하여 실행한다.

 

 

6. Tomcat의 설정 파일  server.xml, web,xml

 

톰캣설치경로/conf/server.xml : Tomcat 서버 설정 파일

톰캣설치경로/conf/web.xml : Tomcat의 모든 web app의 공통 설정

웹앱이름/WEB-INF/web.xml : web app의 개별 설정

 

 

 

HTTP 요청과 응답

 

1. 프로토콜(protocol)이란?

서로 간의 통신을 위한 약속, 규칙

주고 받을 데이터에 대한 형식을 정의한 것

 

2. HTTP(Hyper Text Transfer Protocol)?

텍스트를 전송하기 위한 프로토콜

 

특징)

텍스트 기반의 프로토콜 - 단순하고 읽기 쉽다.

상태를 유지하지 않는다(stateless) - 클라이언트 정보를 저장하지 않음

확장 가능하다  커스텀 헤더(header) 추가 가능

 

3. HTTP 메시지

요청 메시지 <-> 응답 메시지

 

 

4. HTTP 메시지  응답 메시지 format

상태코드 / 의미

1xx / Information

2xx / Success 성공

3xx / Redirect 다른 URL 재 요청

4xx / Client Error 클라이언트 에러, 요청이 잘못됨 404 Not Found

5xx / Server Error 서버 에러, 요청은 정상적인데 서버에서 처리 중 에러 발생

 

5. HTTP 메시지  요청 메시지

HTTP 요청 메시지  GET 메소드

단순히 리소스를 얻어오기 위함

요청 라인과 헤더로 구성되어 있고 바디가 없음. 요청 라인에 쿼리스트링을 통해 작은 데이터를 전달할 수 있음.

 

HTTP 요청 메시지  POST 메소드

서버에 정보를 제공해야 할 때 사용

요청 라인과 헤더, 바디로 구성되어 있음. 서버에 전송할 데이터가 바디에 들어가 있음.

바디에 데이터를 담아서 요청할 때 POST를 사용

(글쓰기, 로그인, 회원가입, 파일첨부 등)

* HTTPS = HTTP + TLS (암호화 덕분에 보안에 유리)

 

7. 텍스트 파일 vs. 바이너리 파일

바이너리 파일 : 문자와 숫자가 저장되어 있는 파일. 데이터를 있는 그대로 읽고 쓴다.

텍스트 파일 : 문자만 저장되어 있는 파일. 숫자를 문자로 변환 후 쓴다.

 

 

8. MIME(Multipurpose Internet Mail Extensions)

텍스트 기반 프로토콜에 바이너리 데이터를 전송하기 위해 고안

내가 보내는 데이터가 어떤 타입인지 MIME 타입을 적어줘야 함.

 

9. Base64

->64진법

바이너리 데이터를 텍스트 데이터로 변환할 때 사용

64진법은 ‘0’~‘9’, ‘A’~‘Z’, ‘a’~‘z’, ‘+’,‘/’ 모두 64(6 bit)의 문자로 구성

-> 이미지 파일을 Base64로 인코딩하여 16진수로 나타냄.

+ Recent posts