[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파일 등)
'🌈 백엔드 > 네트워크 HTTP' 카테고리의 다른 글
네트워크_텍스트파일 vs 바이너리 파일 (2) | 2023.08.09 |
---|---|
네트워크_HTTP 요청메세지 (GET vs POST) (0) | 2023.08.09 |
네트워크_프로토콜 HTTP (0) | 2023.08.09 |
클라이언트 & 서버 & WAS (0) | 2023.08.04 |
네트워크_원격프로그램 (콘솔 출력) (0) | 2023.08.03 |