Replies: 1 comment
|
조금만 더 파이팅입니다 😆 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
HttpServletRequest
HttpServletRequest - 기본 사용법
HttpServletRequest가 제공하는 기본 기능들을 알아보자
hello.servlet.basic.request.RequestHeaderServlet
단축키
Ctrl + +Alt + Shift + T > Extract Method 검색

url : localhost:8081/request-header
개발자도구 > F12 > payload > Header

결과
문제발생
해결방안 : 성공방법 링크
Postman으로 /request-header 로 보내고 결과조회


결과 조회하면

결과
HTTP 요청 데이터 개요
3가지 방법을 사용한다.
GET : 쿼리파라미터
POST : HTML form
HTTP message body에 데이터를 직접 담아서 요청
HTTP 요청 데이터 - GET 쿼리 파라미터
URL의 '쿼리파라미터'를 사용해서 데이터를 전달
ex) 검색, 필터, 페이징 등에서 많이 사용하는 방식
?로 시작&로 구분결과
결과
결과
"복수 파라미터에서 단일 파라미터 조회"
username=hello&username=kim과 같이 파라미터 이름은 하나인데, 값이 중복이면 어떻게 될까?request.getParameter()는 하나의 파라미터 이름에 대해서 단 하나의 값만 있을때 사용해야 한다. 지금처럼 중복일 떄는request.getParameterValues()를 사용해야 한다.참고로 이렇게 중복일때
request.getParameter()를 사용하면 `request.getParamterValues()의 첫번째 값을 반환한다.HTTP 요청 데이터 - POST HTML Form
이번에는 HTML의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송해본다.
주로 회원가입, 상품 주문 등에서 사용하는 방식이다.
webapp > basic > hello-form.html특징
application/x-www-form-urlencodedusername=hello&age=20POST의 HTML Form을 전송하면 웹 브라우저는 다음 형식으로 HTTP 메시지를 만든다. (웹 브라우저 개발자 모드
확인)
요청URL: http://localhost:8080/request-param
content-type :
application/x-www-form-urlencodedmessage body :
username=hello&age=20application/x-www-form-urlencoded형식은 앞서 GET에서 살펴본 쿼리 파라미터 형식과 같다. 따라서 쿼리 파라미터 조회 메서드를 그대로 사용하면 된다.클라이언트(웹 브라우저) 입장에서는 두 방식에 차이가 있지만, 서버 입장에서는 둘의 형식이 동일하므로,
request.getParameter()로 편리하게 구분없이 조회할 수 있다.request.getParameter()는 GET URL 쿼리 파라미터 형식도 지원하고, POST HTML Form 형식도 둘 다 지원한다.참고
content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다.
GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 데이터를 전달할 때는 HTTP 메시지 바디를 사용하지 않기 때문에 content-type이 없다.
POST HTML Form 형식으로 데이터를 전달하면 HTTP 메시지 바디에 해당 데이터를 포함해서 보내기 때문에 바디에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해야 한다. 이렇게 폼으로 데이터를 전송하는 형식을
application/x-www-form-urlencoded라 한다.Postman을 사용한 테스트
이런 간단한 테스트에 HTML form을 만들기는 귀찮다. 이때는 Postman을 사용하면 된다.
Postman 테스트 주의사항
x-www-form-urlencoded선택application/x-www-form-urlencoded로 지정된 부분 꼭 확인java > hello > servlet > basic > request > RequestParamServlet결과
HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트
HTTP message body에 데이터를 직접 담아서 요청
HTTP API에서 주로 사용, JSON, XML, TEXT
데이터 형식은 주로 JSON 사용
POST, PUT, PATCH
먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자.
HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다.
"문자전송"
HTTP요청 데이터 - API 메세지 바디 - JSON
API에서 주로 사용하는 JSON 형식으로 데이터를 전달한다.
"JSON 형식 전송"
JSON 형식 파싱 추가
JSON 형식으로 파싱할 수 있게 객체를 하나 생성하자
hello.servlet.basic.HelloDatahello.servlet.basic.request.RequestBodyJsonServletPostMan 설정
결과
결과
"참고"
"참고"
requeset.getParameter{...})을 이미 제공하기 때문에 파라미터 조회 기능을 사용하면 된다.HTTPServletResponse - 기본 사용법
HttpServletResponse 역할
HTTP 응답 메세지 생성
"편의 기능 제공"
웹브라우저 : localhost:8081/response-header
결과
결과
결과
결과
HTTP 응답 데이터 - 단순 텍스트, HTML
HTTP 응답 메세지는 주로 다음 내용을 담아서 전달한다.
HttpServletReponse - HTML 응답
hello.servlet.web.response.ResponseHtmlServlet결과
http://localhost:8081/response-html
HTTP 응답 데이터 - API JSON
hello.servlet.web.response.ResponseJsonServlet결과
"참고"
application/json은 스펙상 utf-8 형식을 사용하도록 정의되어 있다. 그래서 스펙에서 charset=utf-8과 같은 추가 파라미터를 지원하지 않는다. 따라서application/json이라고만 사용해야지application/json;charset=utf-8이라고 전ㄴ달하는 것은 의미없는 파라미터를 추가한 것이 된다.response.getWriter()를 사용하면 추가 파라미터를 자동으로 추가해버린다. 이때는 response.getOutputStream()으로 출력하면 그런 문제가 없다.
All reactions