본문 바로가기

🌈 백엔드/네트워크 HTTP

네트워크_HTTP 요청 & 응답 (브라우저 출력)

반응형
SMALL

 

[1] HTTP 요청 & 응답


(1) HTTP 요청 & 응답  

  • 터미널 또는 브라우저에서 요청메세지의 값을 입력하면 해당 값을 프로그램으로 돌려서 응답 메세지의 결과값을 출력하는 과정이다 

 

(1) HTTP 요청&응답 과정 

브라우저 URL을 통해 입력값을 받는다 

톰캣 서버에서 HttpServletRequest 가 브라우저의 입력값을 받아 객체를 생성하고 

원격프로그램 등록 @Controller, @RequestMapping을 통해 결과값을 브라우저에 전달한다 

 

 

(3) 요청메세지 HttpServletRequest의 메서드 

메서드 내용 결과 출력
request.getCharacterEncoding() 요청 내용의 인코딩 UTF-8
request.getContentLength() 요청 내용의 길이. 알수 없을 때는 -1 -1
request.getContentType() 요청 내용의 타입. 알 수 없을 때는 null null
request.getMethod() 요청 방법 GET
request.getProtocol() 프로토콜의 종류와 버젼 HTTP/1.1 HTTP/1.1
request.getScheme() 프로토콜 http
request.getServerName() 서버 이름 또는 ip주소 localhost
request.getServerPort() 서버 포트 8080
request.getRequestURL() 요청 URL http://localhost:8080/ch2/requestInfo
request.getRequestURI() 요청 URI /ch2/requestInfo
request.getContextPath() context path /ch2
request.getServletPath() servlet path /requestInfo
request.getQueryString() 쿼리 스트링 year=2021&month=10&day=1
request.getLocalName() 로컬 이름 localhost
request.getLocalPort() 로컬 포트 8080
request.getRemoteAddr() 원격 ip주소
AWS에 배포(deploy)한 다음에 실행하면, 실제 ip주소를 확인할 수 있음.
0:0:0:0:0:0:0:1
request.getRemoteHost() 원격 호스트 또는 ip주소
AWS에 배포(deploy)한 다음에 실행하면, 실제 ip주소를 확인할 수 있음.
0:0:0:0:0:0:0:1
request.getRemotePort() 원격 포트

54855
Iterater iter = request.getParameterName() year, month, day 이름
Map paramMap = request.getParameterMap()
String[] yearArr = request.getParameterValues("year") year=2021&year=2022&year=2023
같은 year를 가진 다양한 값이 있을때 배열로 저장한다

 

 

 

(4) HTTP 요청 & 응답 규칙 

1. 브라우저에서 요청메세지의 입력값을 받는다

2. 받은 입력값을 처리하는 프로그램을 설계한다 

3. 응답메세지의 값을 브라우저 또는 콘솔에 출력한다 

 

 

[2] 애너테이션


(1) HttpServletRequest request 입력값 가져오기

요청메세지의 입력값을 가져온다

(HttpServletRequest reurest)를 통해 브라우저 입력값을 가져온 뒤 

(1)의 원격프로그램을 연결한다 

 

 

(3) HttpServletResponse response 응답값 브라우저 출력하기 

요청메세지의 입력값을 프로그램 처리 후 결과값을 응답메세지를 통해 브라우저로 출력한다

 

HttpServletResponse response + 예외처리 

 

response.setContentType("text/html")

response.setCharacterEncoding("utf-8")

PrintWriter out = response.getWriter();

 

 

 

 

 

 

 

[3] HTTP 요청&응답 실습 


(1) 브라우저에 출력하기 

① 클래스 생성 및 스프링 애너테이션 작성 

 

ch2> YoilTeller 클래스 생성 

원격프로그램 연결 

@Controller , @RequestMapping

입력값 받아오기 

HttpServletRequest request

 

 

 

② 브라우저 출력하도록 수정한다 

 

브라우저 응답하기

HttpServletResponse response 

 

응답값을 텍스트 형식으로 출력하기 

response.setContentType("text/html")

response.setCharacterEncoding("utf-8")

PrintWriter out = response.getWriter();

 

 

③ 톰캣 서버 실행 

 

http://localhost:8080/ch2/getYoil?year=2023&month=8&day=4

입력값을 파란색으로 기재한다 

 

year =2023

month =8

day =4

 

 브라우저 출력 수정전에는 콘솔창으로 조회되고 

 

 브라우저 출력 수정 후에는 브라우저로 출력된다

 

 

 

(2) 이미지로 브라우저에 출력하기 

① 이미지 파일을 소스 위치에 저장

브라우저를 조회할때마다 랜덤으로 이미지가 달라지는 프로그램을 만들 예정이다 

랜덤으로 출력할 이미지를 STS4 프로젝트의 소스폴더에 저장하자 

이미지 폴더를 복사하여 

 

ch2 > src > main > webapp > resources 에 붙여넣기 

 

② 애너테이션 & 응답메세지 설정 

 

원격프로그램등록 

@Controller , @RequestMapping("/rollDice")

응답메세지 설정 

HttpServletResponse response + 예외설정 

 

response.setContentType("rext/html")

response.setCharacterEncoding("utf-8)

PrintWriter out = response.getWriter()

html 구성 설계 

 

 

 

 

③톰캣 서버 실행 

브라우저 조회시 이미지 랜덤 출력 

 

 

 

[4] 동적리소스 & 정적리소스 


 

1. 동적리소스 (프로그램이 실행 후 달라지는 발생된결과물 )

2. 정적리소스 (이미지.js파일, css파일 등)

반응형
LIST