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