Servlet
은 동적인 웹페이지를 만들 때 사용되는 자바 기반 프로그래밍 기술이다. Servlet
은 복잡한 웹 요청과 응답 과정을 간단한 메서드 호출로 다룰 수 있게 해준다.
public class ResponseJsonServlet extends HttpServlet {
ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {...}
클라이언트가 웹 서버에 HTTP 요청 메세지
를 보내면 서버가 request
, response
객체를 생성하고 서블릿 컨테이너에 있는 Servlet
을 호출하면서 객체를 넘겨준다. Servlet
이 작업을 한 뒤 종료되면서 HTTP 응답 메세지
를 반환한다.
HTTP 응답에서 Content-Length 등의 부가 정보는 서버가 자동으로 생성한다.
HttpServletRequest
역할: 개발자가 HTTP 요청 메세지
를 편리하게 사용할 수 있도록 HTTP 요청 메세지
를 파싱한다. 그 결과를 HttpServletRequest
객체에 담아서 제공한다.
HttpServlet
객체는 HTTP 요청 메세지만 읽는 것이 아니라 임시 저장소 등의 부가 기능도 제공한다./** 저장: HTTP 요청 메세지 안에 작은 데이터 저장소가 존재한다. HTTP 요청 메세지가 살아있는 동안 사용할 수 있게 데이터를 넣어준다. **/ request.setAttribute(name, value) /** 조회: HTTP 속 데이터 저장소에서 데이터를 꺼낸다. **/ request.getAttribute(name)
Query Parameter는 URL에 ?
를 시작으로 보낼 수 있다. 추가 Parameter는 &
로 구분하면 된다.
EX) http://localhost:8080?username=park&age=20
request.getParameter("username"); //단일 파라미터 조회
request.getParameterNames(); //파라미터 이름들 모두 조회
request.getParameterMap(); //파라미터를 Map 으로 조회
request.getParameterValues("username"); //이름이 같은 복수 파라미터 조회
url?username=kim&username=park
<- 이처럼Paramerter
의 이름은 하나인데 값이 중복일 때request.getParameter("username")
를 하면 첫 번째 값을 반환한다.
application/x-www-form-urlencoded
형식은 이전에 작성한 GET에서 본 Query Parameter
형식과 같다.
클라이언트 입장에서는 두 방식에 차이가 존재하지만, 서버 입장에서는 동일한 형식으로 인식하므로
request.getParameter()
로 구분없이 조회 가능하다.
김영한님의 스프링 MVC 강의
김영한님의 인프런 로드맵을 따라가면서 스프링을 공부하고 있습니다.
공부한 내용들을 velog에 정리합니다!