
클라이언트의 요청을 처리하고결과를 반환하는Servlet 클래스의규칙을 지킨자바 웹 프로그래밍 기술자바를 사용하여웹을 만들기 위해 필요한 기술(자바 기반-->JDK / JVM 필수): 즉,
java를 이용해 웹개발을 하기 위해서 필요한가장 기본적인(low한) 기술이Servlet
클라이언트 요청에 대해동적으로 작동하는웹 애플리케이션 컴포넌트html을 사용하여 요청에 응답Java Thread를 이용하여 동작MVC 패턴에서Controller로 이용
Client가HTTP 요청WAS는HttpServletRequest/HttpServletResponse객체를생성WAS는요청 URL에 해당되는서블릿 객체를호출
(서블릿을 지원하는 WAS==서블릿 컨테이너)개발자는HttpServletRequest를 통해요청 정보를 편리하게 사용====비즈니스 로직 수행====개발자는HttpServletResponse를 통해응답 정보를 작성WAS는HttpServletResponse를 통해HTTP Response Message 생성 후 Client에 전달
서블릿을관리하기 위한모든 작업을 수행(생성 / 호출 / 관리)java thread를사용해서서블릿을 호출톰캣(Tomcat)처럼서블릿을 지원하는 WAS를서블릿 컨테이너라고 함서블릿 객체는싱글톤으로관리
고객의 요청이 올 때 마다생성하는것은비효율적이기 때문공유 변수 사용에주의해야 한다서블릿 컨테이너가 종료-->서블릿도 종료동시 요청을 위한멀티 쓰레드(Multi Thread)처리를 지원
실제 우리가 WAS를 직접 구현하면많은 사전 과정을구현해야 한다
TCP/IP 연결&소켓 연결HTTP request 메시지 파싱HTTP response 메시지 작성TCP/IP및소켓 연결 종료Servlet을 지원하는 WAS즉,서블릿 컨테이너는이러한 과정들을 대신 수행해준다
-->개발자는비즈니스 로직에 집중할 수 있다!!
starter를 이용한프로젝트 구성
(Packaging을 반드시War로 설정-->후에 JSP를 사용하기 위해 필요)
lombok설정
lombok 플러그인 설치Preferences-->Annotation Processors검색 -->Enable annotation processing체크
Postman설치
:API 요청을 보낼 수 있는 툴
[
@ServletComponentScan설정 - 기본설정 ]:
Springboot환경에서서블릿을 직접 등록해서 사용할 수 있도록 필요한어노테이션
[ 서블릿 등록 ]
- 단계
- 1)
@WebServlet으로이름/연결 url지정- 2)
HttpServlet 상속- 3)
protected 접근지정자를 갖는service 메소드Override- 4)
비즈니스 로직 작성
HTTP request 메시지를편리하게 사용할 수 있도록개발자 대신 파싱해서제공된 객체HttpServletRequest를 사용해서HTTP request message의다양한 정보를조회할 수 있음
start-lineheadersbody
- 추가적으로 다양한
부가 기능도 제공
임시 저장소 기능
: 해당 HTTP 요청이 시작되고 끝날 때 까지 유지되는임시저장소
- 저장 :
req.setAttribute(name, value)- 조회 :
req.getAttribute(name)세션 관리 기능
req.getSession(create: true)
( start-line 정보 조회 )
( Header 정보 조회 )
( 기타 정보 조회 )
HTTP request와상관 없는추가적인 정보들
( 분류 )
쿼리 파라미터 (주로 GET)HTML Form (POST)HTTP request message의body(POST / PUT / PATCH)
단순 텍스트JSON
( 쿼리 파라미터 & HTML Form )
쿼리 파라미터
http request message의body가 없이URL의쿼리 파라미터에데이터를 포함해서 전달- ex)
/url?username=hello&age=20주 사용:검색 / 필터 / 페이징
HTML Form
HTML의 Form형식에서 바로데이터를 넘기는 방식무조건 POST로 요청을 하기 때문에쿼리 파라미터와 다르게Http request message body로 데이터 전송데이터의 형식은쿼리 파라미터와동일한 형식이라서같은 방법으로 조회할 수 있다!Content-Type:application/x-www-form-urlencoded반드시 지정!
단일 파라미터 조회
:req.getParameter()사용복수 파라미터 조회
:req.getParameterValues()사용
( HTTP reqeust message의 body ) - 단순 text
단순 데이터를Stream으로 주고받는 경우byte코드를우리가 읽을 수 있는 문자(String)으로변환해야 한다
(Charset을지정해줘야 한다 --> 여기서는UTF_8)
( HTTP reqeust message의 body ) - JSON
입력받은 문자를jackson 라이브러리의 objectMapper를 통해JSON 형식으로바꿔줘야 한다HelloData:JSON객체로 변환된 정보를 받기 위한임시 데이터 구조- 지금은 이렇게
stream을JSON으로 바꾸고매우할게 많아보이지만,
실제로는 Spring MVC써서 편리하게 사용할 수 있음 -->걱정 X
HTTP response 메시지를편리하게 만들수 있도록 제공되는 객체
status-line
:statusCode지정response-header
:데이터 타입 등등을 지정header 편의 메서드
:setHeader로텍스트로 필드를 삽입하는 것이 아니라하나하나 각각 setter로 지정
(아래 그림)