🌿 스프링/김영한

2. 서블릿

le2donguk 2026. 2. 7. 02:04

@WebServlet

  • name = 서블릿 이름
  • urlPatterns : URL 매핑

HTTP 요청이 오면 매핑된 URL 이 호출되면서 서블릿 컨테이너는 protected void service(HttpServletRequest request, HttpServletResponse response)를 자동으로 호출한다 

 

 

HttpServletRequest

HTTP 요청 메시지를 개발자가 직접 파싱해도 되지만 매우 불편함

그래서 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱 한다 HttpServletRequest 객체에 담아서 준다

또한 HttpServletRequest는 추가로 여러 가지 부가 기능을 제공한다

 

" 임시 저장소 기능 "

  • HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소 기능
    • 저장 : request.setAttribute(name,value)
    • 조회 : request.getAttribute(name)

 

" 세션 관리 기능 "

  • request.getSession(create:true)

 

 

HTTP 가 Data를 전달하는 방법 3가지 

  1. GET 방식의 쿼리
    • 예) 검색, 필터, 페이징 등에서 많이 사용하는 방식
  2. POST 방식의 HTML Form
    • content-type : application/x-www-form-urlencoded
    • 메시지 바디에 마치 쿼리 파리미터 형식으로 전달 username=hello&age=20
    • 예) 회원가입, 상품 주문, HTML Form 사용
  3. HTTP message body
    • Body에 JSON, XML, TEXT 등으로 전달

 

 

단일 파라미터 조회, 복수 파라미터 조회

  • 복수 파라미터 조회 (username=kim&username=hello)
  • request.getParameter([key이름])
  • 단일 파라미터 조회
  • request.getParameterValues([Key이름])

 

 

쿼리와 Form

쿼리파라미터에서 data를 보내는 방식과 HttpForm 을통해 Body로 Data를 보내는 방식은 서로 호환이 된다 그래서 둘 다 request.getParameter로 꺼낼 수 있다

 

 

일반 Text Data

request.getInputStream()

StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8)

InputStream으로 주고받을 수 있다

 

 

HTTP 응답 데이터

  1. 단순 응답 (텍스트로 응답)
  2. response.getWriter()
  3. HTML 응답
    PrintWriter writer = response.getWriter();
    writer.println("<html>");
    writer.println("<body>");
    writer.println("<div> 안녕? </div>");
    writer.println("</body>");
    writer.println("</html>");
  4. HTTP API - MessageBody JSON 응답
    ObjectMapper.writeValueString 이용