스프링 부트 프로젝트 만들기
스프링 부트를 이용하여 무엇을 하진 않을거지만 서블릿 공부할때 편리하기때문에 사용하자.
원래 jar을 사용하는데 JSP 공부를 위해 War을 사용하자.
build.gradle -> Open Project
localhost:8080 접속하면 오류는 뜨지만 접속은 된다.
프로젝트 설정
- intellij로 바로 실행되도록 하기
- 어노테이션 프로세싱 enable하기
postman 설치하기 - API 확인시 좋다.
스프링 부트에서 서블릿 환경 구성
서블릿 어노테이션 붙이기
ctrl + o : 메소드 선택하기
WebServlet 실행 확인
@WebServlet (name="겹치지않는이름", urlPatterns="겹치지않는 url")
웹에 접속하면 로그가 찍힌다
파라미터 가져오기
http://localhost:8080/hello?username=lol 접속시
만약 username 말고 다른 파라미터를 전송했을경우
=> null값이 입력된다.
http://localhost:8080/hello?name=hey
응답 처리하기 (화면에 띄우기, 응답 보내기)
http://localhost:8080/hello?username=mj 접속시에
로그
HTTP 요청 메세지를 로그로 확인
application.properties에 작성해주면 된다.
logging.level.org.apache.coyote.http11=debug
길게 출력된다.
운영 서버에는 적용시키지말고 개발 단계에서만 적용하자!
요청-응답 구조
Welcome Page (domain 첫 화면)
디렉토리에 index.html 파일을 만들면 welcome Page로 띄어준다.
HttpServletRequest (요청)
서블릿은 HTTP 요청 메세지를 파싱하여 그 결과를 HttpServletRequest 객체에 담아 제공한다.
Http 요청 메세지
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
임시 저장소 기능
HTTP 요청이 시작될때부터 끝날때까지 유지되는 임시 저장소 기능
저장: request.setAttribute(name, value)
조회: request.getAttribute(name)
세션 관리 기능
request.getSession(create:true)
HttpServletRequest 기본 사용법
✅ 헤더 StartLine
http://localhost:8080/request-header?username=hi 접속시에
✅ 헤더 정보
출력 결과
✅ Header 편리한 조회
결과
컨텐츠를 조회하기 위해서는 POST 방식으로 데이터를 보내야한다. => POSTMAN을 사용하자
POST 방식으로 데이터 보내기
raw - Text로 URL에 POST 요청을 보낸다.
컨텐츠 결과에
메세지 정보가 출력되는 것을 알 수 있다.
* 헤더에서 어떤 부분만 뽑아서 보고싶을때
request.getHeader("host"); //host 값 꺼내기
✅ 기타 정보 조회 (네트워크 정보)
출력 결과
IPv6이 기본으로 나오고, IPv4 정보를 보고싶으면
-Djava.net.preferIPv4Stack=true 옵션을 넣어주면 된다.
HTTP 요청 데이터
클라이언트 -> 서버로 데이터 전달
참고
x-www-form-urlencoded : 모든 데이터 인코딩
<-> multipart/form-data : 인코딩 안함, 파일, 이미지 전달
둘 다 html form 전달시 사용
HTTP 요청 - GET 쿼리 파라미터
1. 전체 파라미터 조회
request.getParameterNames()
http://localhost:8080/request-param?username=hi&baby=true
결과
2. 단일 파라미터 조회
request.getParameter("파라미터 이름") //값 하나만 반환
결과
3. 이름이 같은 복수 파라미터 조회
request.getParameterValues("파라미터명") //값 여러개 반환, 리스트 타입 반환
http://localhost:8080/request-param?username=hi&age=20&username=bye //username이 2개 값 전달
결과
HTTP 요청 - POST 쿼리 파라미터
basic 폴더에 html form 만들기
http://localhost:8080/basic/hello-form.html
값 작성하기
결과
url 형식으로 전달되는 GET-쿼리 파라미터든 HTML form 형식으로 전달되는 POST 방식이든 getParameter() 를 이용하여 파라미터 값을 꺼낼 수 있다. => 서버 입장에서는 받는 방식 둘 다 같다.
GET URL 쿼리 파라미터 : HTTP 메세지 바디를 사용하지않고 바로 보냄, content-type 없음
POST HTML Form 형식 : HTTP 메세지 바디에 데이터 포함해서 보냄, content-type: application/x-www-form/urlencoded
html form을 작성하지 않고 보내는 방법 - postman
html-form 결과는 어차피 x-www-form-urlencoded으로 보내지기때문에, postman에서 바로 그 형식으로 데이터를 보내줄 수 있다.
결과
HTTP 요청 - API 메세지 바디
http message body에 데이터를 직접 담아서 요청
HTTP API에서 주로 사용 - JSON,XML ..
POST,PUT,PATCH -> html form 형식으로는 post만 가능
PUT,PATCH는 데이터 수정 method이다.
PUT: 전체 값을 보내주지 않으면 나머지 값은 default 값(ex)NULL)이 된다. => 전체 수정
PATCH: 일부 값만 보내면 그 부분만 변경되고 나머지 값들은 이전 값과 같다. => 일부 수정
출처: https://devuna.tistory.com/77
🌿 단순 텍스트 읽기 (inputStream)
HTTP 메세지 바디에 텍스트 메세지를 전송한 후 읽어보자.
데이터 읽는 코드
데이터 전송
로그
🌿 API 메세지 - JSON
JSON 파싱 (JSON -> 객체로 변환)
필드를 만들고, setUsername, getAge 등등을 사용할 수 있도록 Lombok의 @Getter, @Setter 추가하기
메세지 텍스트 그대로 읽기(inputStream)
raw-json 데이터 보내기
로그
JSON 파싱하여 읽기
jackson 라이브러리 (JSON 변환 라이브러리)의 ObjectMapper 사용하기
JSON 전송
결과
HTTPServletResponse (응답 데이터)
HTTP 응답 메세지 생성 - HTTP 응답 코드, 헤더 생성, 바디 생성
+ Content-Type, 쿠키, Redirect
기본 사용법
응답 보내기
결과
🐰 content 편의 메서드
🐰 cookie 편의 메서드
결과값
🐰 redirect 편의 메서드
결과값
메세지 body 작성하기
1. 텍스트 응답 데이터 보내기
텍스트 : content-type:text/plain
2. HTML 응답 데이터 보내기
html 메세지 작성하기 - contentType:text/html
결과
3. API JSON 응답 데이터 보내기
content-type : application/json
(자동 utf-8형식이므로 따로 charset 지정X)
응답 결과
'Spring > 스프링 MVC' 카테고리의 다른 글
서블릿, JSP, MVC 패턴 (0) | 2023.03.26 |
---|---|
스프링 MVC 1편 - 웹 애플리케이션 이해 (0) | 2023.03.24 |