일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 예외미루기
- 제네릭
- exception
- 객체 비교
- 참조형변수
- 메소드오버로딩
- NestedFor
- 정수형타입
- 오라클
- 환경설정
- 예외처리
- 한국건설관리시스템
- abstract
- oracle
- GRANT VIEW
- 인터페이스
- 사용자예외클래스생성
- 어윈 사용법
- 자바
- 대덕인재개발원
- 추상메서드
- cursor문
- EnhancedFor
- 컬렉션프레임워크
- 집합_SET
- 생성자오버로드
- Java
- 컬렉션 타입
- 자동차수리시스템
- 다형성
- Today
- Total
거니의 velog
(10) 서블릿의 세 가지 기본 기능 본문
* 톰캣과 같은 WAS(Web Application Server, 웹 애플리케이션 서버)가 처음 나왔을 때 웹 브라우저 요청을 스레드 방식으로 처리하는 기술이 바로 서블릿이었다. 모든 웹 프로그램은 이 서블릿의 기능을 뼈대로 동작한다. 따라서 이 내용을 잘 이해하고 나면 전체 웹 프로그램이 어떤 식으로 동작하는지 쉽게 이해할 수 있다. 그 외의 기능들은 주요 서블릿 기능이 효율적으로 동작하기 위해 제공하는 세부 기능이라 할 수 있다.
1. 서블릿 기본 기능 수행 과정
* 다음은 서블릿이 수행하는 세 가지 주요 기능이다. 요약하면 클라이언트로부터 요청을 받아 비즈니스 로직을 처리하고, 그 결과를 다시 클라이언트에 돌려주는 과정이다.
(1) 클라이언트로부터 요청을 받는다.
(2) 데이터베이스 연동과 같은 비즈니스 로직을 처리한다.
(3) 처리된 결과를 클라이언트에 돌려준다.
* 초기 웹 프로그램 개발에서는 서블릿이 클라이언트로부터 요청을 받아 데이터베이스 연동 같은 비즈니스 작업을 처리한 후 그 결과를 클라이언트의 브라우저로 전송하는 방식으로 작업했다.
* 클라이언트로부터 요청을 받는 작업에는 어떤 것들이 있을까? 우리가 자주 사용하는 포털 사이트에서 로그인하려고 ID와 비밀번호를 텍스트 창에 입력한 후 로그인 버튼을 클릭하면 사용자가 입력한 ID와 비밀번호가 서버 쪽의 서블릿에 전송된다. 서블릿에서는 여러 가지 메서드를 이용해 사용자가 전송한 ID와 비밀번호를 받아온다.
* 그 다음 사용자의 로그인 요청에 대해 데이터베이스와 연동하여 사용자가 이미 등록된 회원인지 조회한다. 그 결과에 따라 다음 페이지로 가던지 ID나 비밀번호가 틀렸으니 다시 로그인하라는 오류 메시지를 클라이언트에 전송한다.
2. 서블릿 응답과 요청 수행 API 기능
* 우선 요청이나 응답과 관련된 서블릿 기능을 알아보자. 요청이나 응답과 관련된 API는 모두 javax.servlet.http 패키지에 있다.
- 요청과 관련된 API : javax.servlet.http.HttpServletRequest 클래스
- 응답과 관련된 API : javax.servlet.http.HttpServletResponse 클래스
다음 그림은 요청이나 응답과 관련된 API가 서블릿의 doGet()이나 doPost() 메서드의 매개변수로 사용되는 예이다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ThirdServlet doGet 메서드 호출");
}
* 클라이언트가 서블릿에 요청을 하면 먼저 톰캣 컨테이너가 받는다. 그런 다음 사용자의 요청이나 응답에 대한 HttpServletRequest 객체와 HttpServletResponse 객체를 만들고 서블릿의 doGet()이나 doPost() 메서드를 호출하면서 이 객체들을 전달한다.
* 톰캣이 사용자의 요청에 대한 정보를 모든 HttpServletRequest 객체의 속성으로 담아 메서드로 전달하므로 각 HttpServletRequest에서 제공하는 메서드들은 매개변수로 넘어온 객체들을 이용하여 사용자가 전송한 데이터를 받아 오거나 응답할 수 있는 것이다.
* 다음은 각 API에서 제공하는 중요한 메서드들을 정리해 둔 것이다. 이 메서드를 이용해서 여러 가지 요청이나 응답과 관련된 작업을 한다.
[HttpServletRequest의 여러 가지 메서드]
반환형 | 메서드 이름 | 기능 |
boolean | authenticate (HttpServletResponse response) |
현재 요청한 사용자가 ServletContext 객체에 대한 인증을 하기 위한 컨테이너 로그인 메커니즘을 사용한다. |
String | changeSessionId() | 현재 요청과 연관된 현재 세션의 id를 변경하여 새 세션 id를 반환한다. |
String | getContextPath() | 요청한 컨텍스트를 가리키는 URI를 반환한다. |
Cookie[] | getCookies() | 클라이언트가 현재의 요청과 함께 보낸 쿠키 객체들에 대한 배열을 반환한다. |
String | getHeader(String name) | 특정 요청에 대한 헤더 정보를 문자열로 반환한다. |
Enumeration<String> | getHeaderNames() | 현재의 요청에 포함된 헤더의 name 속성을 enumeration으로 반환한다. |
String | getMethod() | 현재 요청이 GET, POST 또는 PUT 방식 중 어떤 HTTP 요청인지 반환한다. |
String | getRequestURI() | 요청한 URL의 컨텍스트 이름과 파일 경로까지 반환한다. |
String | getServletPath() | 요청한 URL에서 서블릿이나 JSP 이름을 반환한다. |
HttpSession | getSession() | 현재의 요청과 관련된 세션을 반환한다. 만약 세션이 없으면 새로 만들어서 반환한다. |
[HttpServletRequest의 여러 가지 메서드]
반환형 | 메서드 이름 | 기능 |
void | addCookie(Cookie cookie) | 응답에 쿠키를 추가한다. |
void | addHeader(String name, String value) | name과 value를 헤더에 추가한다. |
String | encordURL(String url) | 클라이언트가 쿠키를 지원하지 않을 때 세션 id를 포함한 특정 URL을 인코딩한다. |
Collection<String> | getHeaderNames() | 현재 응답의 헤더에 포함된 name을 얻어온다. |
void | sendRedirect(String location) | 클라이언트에게 리다이렉트(redirect) 응답을 보낸 후 특정 URL로 다시 요청하게 된다. |
String | getPathInfo() | 클라이언트가 요청 시 보낸 URL과 관련된 추가 경로 정보를 반환한다. |
'Java > Java_Servlet' 카테고리의 다른 글
(12) 서블릿의 응답 처리 방법 (0) | 2023.08.23 |
---|---|
(11) <form> 태그 이용해 서블릿에 요청하기 (0) | 2023.08.22 |
(9) 애너테이션을 이용한 서블릿 매핑 (0) | 2023.08.22 |
(8) 서블릿 동작 과정 (0) | 2023.08.22 |
(7) 서블릿이란? - 2 (0) | 2023.08.22 |