본문 바로가기
아카이브/스프링

스프링의 정석 ( 원격 프로그램, HTTP 요청/응답 )

by nineteen 2021. 12. 21.
반응형

배운 것

원격 프로그램을 실행하는 방법

HTTP 요청 / 응답

 

내용 정리

웹 프로그래밍?

- 요청을 받으면 처리 후, 브라우저에게 html을 만들어서 주는 것

 

 

원격 프로그램을 실행하기 위해선 브라우저와 웹 어플리케이션 ( WAS )가 필요하다.

 

브라우저에 URL을 입력하면 주소를 통해 호출되는 원리 

 

이렇게 하기 위해선

1. 사전에 프로그램 등록

2. URL과 프로그램(메소드)를 연결

의 절차가 필요하다

 

클래스에 @Controller을 붙임

호출하려는 메소드에 @ReqeustMapping을 붙임

-> URL에 메소드가 연결됨, 브라우저에 URL을 입력하고 호출하면 URL과 연결된 메소드가 실행된다

 

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Hello {
	// 브라우저에 해당 주소로 요청하면 main메소드가 실행
	@RequestMapping("/hello")
	public void main(HttpServletResponse response) throws IOException {
		System.out.println("Hello");	// 콘솔에 출력
		
		
		// 브라우저로 출력
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		out.print("Hello");
	}
	
}

 

브라우저로 URL을 입력해서 원격프로그램을 호출(요청)하면, 

톰캣이 받아서 HttpServletRequest객체를 만들고 요청한 내용을 담은 후, 연결된 메소드에 매개변수로 전달한다

 

매개변수로 적기만 하면, 톰캣이 자동으로 만들어서 준다.

우리는 톰캣이 만들어준 것을 사용하면 됨

 

 

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

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

 

브라우저에서 URL로 요청 -> 서버에서 원격 프로그램 실행 -> 결과를 HTML로 응답

 

 

프로토콜?

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

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

- ex) 편지봉투 (보내는 사람, 받는 사람, 주소 우표등)

 

HTTP ( Hyper Text Transfer Protocol )

- 텍스트 기반의 프로토콜

- 단순하고 읽기 쉬움

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

    - 같은 클라이언트에서 데이터를 보내도 서버는 인지하지 못함

    - 이를 보완하기 위해 쿠키, 세션 사용 -> 클라이언트 구별 가능

- 확장 가능 (커스텀 헤더 추가 가능)

- 요청 메세지 / 응답 메세지로 구분

    - 브라우저에 URL을 입력해서 요청하면 브라우저가 HTTP 요청 메세지를 작성해 전송됨

    - 서버는 요청을 받아서 HTTP 응답 메세지를 작성해 응답해줌

 

HTTP 요청 메세지

- GET / POST

 

ㅇ GET

    - 서버에게 리소스를 요청해서 얻어온다 (READ)

    - BODY없음, 대신 데이터를 보낼 게 있으면 쿼리 스트링 사용

    - 단순히 정보를 얻어오는 역할

 

ㅇ POST

    - 서버에 정보 제공 (WRITE)

    - 전송할 데이터를 BODY에 담아 전송

    - 게시판 글쓰기, 로그인, 회원가입, 파일첨부 등등

 

 

 

 

느낀점/보완할 점

스프링 강의를 통해 스프링을 공부한지 1달?이 넘었다.

이제는 어느정도 눈에 익지만 아직 손으로 타이핑하기엔 부족한 듯 하다.

 

스프링을 통해서 계속 무언가를 만들어봐야겠다는 생각이 들었다.

 

 

 

 

혹시 잘못된 정보가 있다면 지적 부탁드려요.