HttpServlet

  • HttpServlet은 GET/POST 등에 맞게 doGet(), doPost()등을 제공
  • 개발자들은 본인에게 필요한 메소드를 오버라이드하는 것만으로 GET/POST 방식 처리를 나누어서 처리 가능
  • HttpServlet을 상속받은 클래스 객체는 톰캣과 같은 WAS내부에서 자동으로 객체를 생성하기 때문에 개발자가 신경을 쓸 필요가 없다. 
  • 멀티 스레드에 의해서 동시에 실행될 수 있도록 처리되기 때문에 개발자는 동시에 많은 사용자를 어떻게 처리해야하는지 고민을 줄일 수 있음.
  • GenericServlet의 경우 HTTP 프로토콜에 특화 되지 않는 요청에 대한 기능을 정의하고 있음.
    • ServletRequest / ServletResponse라는 타입을 사용

Servlet 상속도


HttpServletRequest의 주요기능

기능 메소드 설명
HTTP헤더 관련 getHeaderNames()
getHeader(이름)
HTTP 헤더 내용들을 찾아내는 기능
사용자 관련 getRemoteAddress() 접속한 사용자의 IP주소
요청 관련 getMethod()
getRequestURL()
getRequestURI()
getServletPath()
GET/POST 정보, 사용자가 호출에 사용한 URL정보 등
쿼리 스트링 관련 getParameter()
getParameterValues()
getParameterNames()
쿼리 스트링 등으로 전달되는 데이터를 추출하는 용도
쿠키 관련 getCookies() 브라우저가 전송한 쿠키 정보
전달 관련 getRequestDispatcher()  
데이터 저장 setAttribute() 전달하기 전에 필요한 데이터를 저장하는 경우
  • getParameter()
    • 쿼리스트링에서 키(key)를 이용해서 값(value)을 얻는 역할을 위해 사용
    • 결과는 항상 Strinf 타입이다. 그러기에 받은 데이터를 숫자와 같이 처리시 예외가 발생 함.
  • getParameterValue()
    • String[] 문자가 여러 개 일때 배열에 넣는 메소드로 사용
  • setAttribute()
    • JSP로 전달한 데이터를 추가할 때 사용
    • 키(key)와 값(value)의 형태로 데이터를 저장.
    • 이때 키(key)는 문자열로 지정, 값(value)은 모든 객체 타입을 이용가능함. 
  • RequestDispatcher
    • 현재의 요청을 다른 서버의 자원(서블릿 혹은 JSP)에게 전달하는 용도로 사용
    • 2개의 메소드가 존재
      • forward()
        • 현재까지의 모든 응답내용은 무시하고 JSP가 작성하는 내용만을 브라우저로 전달
      • include()
        • 지금까지 만들어진 응답내용 + JSP가 만든 내용을 브라우저로 전달

HttpServletResponse의 주요기능

기능 메소드 설명
MIME 타입 setContentType() 응답 데이터의 종류를 지정(이미지/html/xml등)
헤더 관련 setHeader() 특정 이름의 HTTP헤더 지정
상태 관련 setStatus() 404, 200, 500 등 응답 상태 코드 지정
출력 관련 getWriter() PrintWriter를 이용해서 응답 메시지 작성
쿠키 관련 addCookie() 응답 시에 특정 쿠키 추가
전달 관련 sendRediret() 브라우저에 이동을 지시
  • sendRedirect()
    • 브라우저에게 '다른 곳으로 가라'는 응답 메세지를 전달함.
    • HTTP에서 'Location' 이름의 HTTP헤더로 전달되는데 브라우저는 "Location'이 있는 응답을 받으면 화면을 처리하는 대신에 주소창에 지정된 주소로 이동하고, 다시 호출하게 된다. 

'Backend > Spring' 카테고리의 다른 글

@Autowired @Quelifier @Component @Value  (0) 2023.01.07
Bean을 .xml 통해 만들어 보기  (0) 2023.01.07
Spring이란? (DI 와 IOC)  (0) 2023.01.04
모델(Model)  (0) 2022.11.29
웹 프로젝트  (0) 2022.11.28