HttpServlet
http프로토콜에 특화된 기능을 처리하기 위한 용도
요청 Request를 처리해서 응답 Response하는 목적으로 설계되었다.
- httpServlet을 상속받은 객체는 WAS 내부에서 자동으로 객체가 생성, 관리 된다.
- 멀티스레드에 의해 동시 실행될 수 있도록 처리할 수 있다.
객체 자동 관리
서블릿은 웹이라는 특수한 환경으로 인해 개발자가 직접 객체를 생성하는 대신 톰캣에서 객체를 관리한다.
서블릿 관점에서 톰캣은 서블릿 컨테이너로 볼 수 있다.
처리 과정
- 서블릿이 처리해야 하는 특정 경로 호출
- 경로에 맞는 서블릿 클래스를 로딩하고 개체를 생성 → init()메서드 실행
- 요청 정보를 분석해 쿼리 스트링의 파라미터를 HttpServletRequest로 전달 받는다.
- 응답에 필요한 기능은 HttpServletResponse로 전달 받는다.
- doGet() / doPost() 등 메서드를 실행한다.
- 동일한 주소 호출이 있으면 동일한 객체 하나만 사용한다.
- 톰캣이 종료되면 destroy()메서드가 실행된다.
HttpServletRequest
http 메세지 형태로 들어오는 요청에 대한 정보를 파악하기 위해 제공 된다.
주로 '읽기' 기능을 제공한다.
쿼리 스트링으로 전달되는 데이터를 추출하는 용도
getParameter()
key를 이용해 value를 얻는다. 결과는 String으로 반환되며, null이 가능하다.
getParameterValues()
동일한 이름의 파라미터가 여러개 있는 경우 String[]타입으로 반환된다.
전달하기 전에 필요한 데이터를 저장
setAttribute()
key와 value형태로 데이터를 추가 전달한다.
key는 문자열, value는 모든 객체 타입을 이용할 수 있다.
요청을 다른 서버로 전달
RequestDispatcher
현재 요청을 다른 서버의 자원에게 전달하는 용도로 사용된다.
- forward(): 모든 응답은 무시하고 JSP가 작성하는 내용만 전달
- include(): 모든 응답 + JSP 작성 내용 모두 전달
HttpServletResponse
주로 '쓰기'기능을 제공한다.
sendRedirect()
브라우저에게 다른 곳에 가라는 응답을 전달한다.
주소가 아예 변경되어 '새로고침'을 미리 방지할 수 있고,
특정 작업이 아예 끝나고 새로 시작하는 흐름을 만들 수 있다.
PRG패턴에서 이 방법이 사용된다.
'Framework > Spring' 카테고리의 다른 글
[토비의스프링] 1.3 DAO의 확장 (0) | 2024.11.28 |
---|---|
[토비의스프링] 1.2 DAO의 분리 (0) | 2024.11.27 |
[토비의스프링] 1.1 초난감 DAO (0) | 2024.11.26 |
[Spring] Spring MVC 구조 알아보기 (0) | 2023.07.14 |
[Spring] HTTP로 요청 주고 받는 방법 GET, POST (0) | 2023.07.14 |