메모
alt + 1 project menu로 이동
ctrl + shift + <- -> 화면 크기 조절
esc로 빠져나옴
프로젝트 세팅
start.spring.io 사이트에서 아래와 같이 세팅한다.
파일을 Generate하고 프로젝트를 실행한다.
Application 을 실행하고 톰켓 성공 메시지가 뜨면 localhost:8080에 접속한다.
whitelabel error page가 뜨면 성공
File->Setting에서 롬복 플러그인을 설치하고 Annotation Processor 에서 annotation processing 을 enable시킨다.
에서 postman을 설치한다. API 관리를 도와준다.
Hello 서블릿
@ServletComponentScan을 Application에 붙인다.
스프링에서 서블릿관련 패키지에서 찾아 서블릿을 등록해준다.
basic pakage 를 만들고 그 안에 HelloServlet Class를 만든다.
/hello로 접속하면 이 파일로 오도록 WebServlet의 urlPatterns을 설정한다.
ctrl+O 키로 오버라이드 할 함수를 찾을 수 있다.
service 함수를 오버라이드한다. 이렇게 하면 /hello로 접속 시 service가 호출된다.
이제 로그를 남기고 스프링을 재실행한다.
/hello로 접속하니 빈화면이 뜨고, 로그에 HelloServlet.service가 남겨진 것을 확인할 수 있다.
인자로 들어오는 request와 response 값을 찍어보면
was서버가 생성한 인터페이스 구현체 로그를 볼 수 있다.
개발자도구에서 확인한 메시지 값이다.
main > resources > application.properties 에
logging.level.org.apache.coyote.http11=debug
이 설정을 추가하면 로그에 http 메시지가 뜨는 것을 확인할 수 있다. 그러나 개발 당시에만 사용하고 운영서버로 넘기지는 말자.
스프링 부트는 톰캣 서버를 생성하고 서블릿 컨테이너 안에 서블릿을 생성한다.
reques가 들어오면 서블릿을 실행한다.
HttpServletRequest
서블릿은 개발자 대신 요청 메시지를 파싱하여 HttpServletRequest 객체에 담아 제공한다.
이렇게 조회할 수 있다.
크게 3가지 방법으로 요청이 들어온다.
1. Get - 쿼리 파라미터
2. Post - Html From
3. message body에 데이터 담아 요청 (Post, Put, Patch)
1. Get - 쿼리 파라미터
http://localhost:8080/request-param?username=hello&age=20
이런 식으로 url에 추가되어 온다.
request.getParameter("username");
으로 조회할 수 있다.
2. Post - Html From
1번방식과 동일한 username=hello&age=20의 쿼리 파라미터가 url이 아닌 메시지 바디에 포함되어 온다.
request.getParameter("username"); 은 두 가지 방식 모두 지원한다.
3. message body에 데이터 담아 요청 (Post, Put, Patch)
JSON, XML등의 데이터가 메시지 바디에 포함되어 전송된다.
Json의 경우 파싱할 객체를 만들고(HelloData) ObjectMapper를 사용하여 매핑한다.
HttpServletResponse
http 응답코드 지정, 해더와 바디 생성을 한다.
content-type, 쿠키, redirect등을 가능케 한다.
이렇게 지정 가능
http응답 방식은 크게 세 가지이다.
1. 단순 텍스트 응답
2. html 응답
3. http api - MessageBody JSON 응답
1. 단순 텍스트 응답
앞에서 살핀 writer.println("ok")가 단순 텍스트 응답
2. html 응답
+ response.setContentTypt("text/html") 설정해주면 된다.
3. http api - MessageBody JSON 응답
앞서 만들어둔 HelloData 객체를 ObjectMapper를 사용하여 스트링으로 만들어 반환한다.
'Spring boot' 카테고리의 다른 글
[소셜로그인] 1탄 Spring Security, JWT, OAuth 개념 (0) | 2022.02.14 |
---|---|
에러노트 UnsatisfiedDependencyException (0) | 2022.02.12 |
[MVC1] 웹 애플리케이션의 이해 (0) | 2021.11.23 |
[HTTP] HTTP 헤더 - 캐시와 조건부 요청 (2) | 2021.11.16 |
[HTTP] HTTP 일반 헤더 (0) | 2021.11.09 |