본문 바로가기

《 IT 》/JSP + Servlet

[Servlet] 서블릿 기초(1)

[ Servlet ] 서블릿 기초(1)

(수정: -)


 

⚠️ 개요

해당 글은 작성자가 공부한 내용을 정리한 글입니다.

더보기

1. [servlet] 서블릿 이란? (글보기)

2. [servlet] 서블릿 기초

  • (1)세 가지 기본 기능
  • (2)<form> 태그 이용해 서블릿에 요청
  • (3)서블릿에서 클라이언트의 요청을 얻는 방법
  • (4)서블릿의 응답 처리 방법
  • (5)웹 브라우저에서 서블릿으로 데이터 전송하기
  • (6)GET 방식과 POST 방식 요청 동시에 처리하기
  • (7)자바스크립트로 서블릿에 요청하기

 

📕 서블릿 기초

톰캣과 같은 WAS가 처음 나왔을 때 웹 브라우저 요청을 스레드 방식으로 처리하는 기술이 바로 서블릿이었습니다.

서블릿 기초 글은 웹 프로그래밍의 뼈대를 배우는 내용입니다. 해당 글들을 모두 이해하면 전체 웹 프로그램이 어떤 식으로 동작하는지 쉽게 이해할 수 있습니다.

 

 

✅ 서블릿 기본 기능 수행 과정

다음 이미지는 서블릿이 수행하는 세 가지 주요 기능을 나타내었습니다.

클라이언트로부터 요청을 받아 비즈니스 로직을 처리하고, 그 결과를 다시 클라이언트에 돌려주는 과정입니다.

1. 클라이언트로부터 요청을 받습니다.

2. 데이터베이스 연동과 같은 비즈니스 로직을 처리합니다.

3. 처리된 결과를 클라이언트에 돌려줍니다.

 

초기 웹 프로그램 개발에서는 서블릿이 클라이언트로부터 요청을 받아 데이터베이스 연동 같은 비즈니스 작업을 처리한 후 그 결과를 클라이언트의 브라우저로 전송하는 방식으로 작업됐습니다.

클라이언트로부터 요청 받는 작업으로는 ID(아이디), PW(비밀번호)와 같은 정보들이 서버 쪽의 서블릿에 전송됩니다.

서블릿에서는 여러 가지 메서드를 이용해 사용자가 전송한 ID와 PW를 받아 옵니다.

그 다음 사용자의 로그인 요청에 대해 데이터베이스와 연동하여 사용자가 이미 등록한 회원인지를 조회합니다.

조회한 결과에 따라 페이지가 변경 되던지 아니면 ID와 PW가 틀려서 오류 메시지를 클라이언트에 전송합니다.

 

 

✅ 서블릿 응답과 요청 수행 API 기능

기능 중 요청이나 응답과 관련된 서블릿 기능이 있습니다. 요청이나 응답과 관련된 API는 모두 javax.servlet.http 패키지에 있습니다.

- 요청 API : javax.servlet.http.HttpServletRequest 클래스

- 응답 API : javax.servlet.http.HttpServletResponse 클래스

 

요청이나 응답과 관련된 API가 서블릿의 doGet(), doPost() 메서드의 매개변수로 사용되는 예시 입니다.

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response){
    	System.out.println("doGet 호출");
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response){
    	System.out.println("doPost 호출");
    }
}

클라이언트가 서블릿에 요청을 하면 먼저 톰캣 컨테이너가 받습니다. 그런 다음 사용자의 요청이나 응답에 대한 HttpServletRequest 객체와 HttpServletResponse 객체를 만들고 서블릿의 doGet()이나 doPost() 메서드를 호출하면서 객체들을 전달합니다.

톰캣이 사용자의 요청에 대한 정보를 모든 HttpServletRequest 객체의 속성으로 담아 메서드로 전달하므로 각 HttpServletRequest에서 제공하는 메서드들은 매개변수로 넘어온 객체들을 이용하여 사용자가 전송한 데이터를 받아 오거나 응답할 수 있는 것입니다.

 

다음은 HttpServletRequest의 여러 가지 메서드입니다.

반환형 메서드 이름 기능
boolean authenticate
(HttpServletResponse
response)
현재 요청한 사용자가 ServletContext 객체에 대한 인증을 하기 위한 컨테이너 로그인 메커니즘을 사용합니다.
String changeSessionId() 현재 요청과 연관된 현재 세션의 id를 변경하여 새 세션 id를 반환합니다.
String getContextPath() 요청한 컨텍스트를 가리키는 URI을 반환합니다.
Cookie[] getCookie() 클라이언트가 현재의 요청과 함께 보낸 쿠키 객체들에 대한 배열을 반환홥니다.
String getHeader
(String name)
특정 요청에 대한 헤더 정보를 문자열로 반환합니다.
Enumeration
<String>
getHeaderNames() 현재의 요청에 포함된 헤더의 name 속성을 enumeration으로 반환합니다.
String getMethod() 현재 요청이 GET, POST 또는 PUT 방식 중 어떤 HTTP 요청인지를 반환합니다.
String getRequestURI() 요청한 URL의 컨텍스트 이름과 파일 경로까지 반환합니다.
String getServletPath() 요청한 URL에서 서블릿이나 JSP 이름을 반환합니다.
HttpSession getSession() 현재의 요청과 연관된 세션을 반환합니다. 만약 세션이 없으면 새로 만들어서 반환합니다.

 

다음은 HttpServletReponse의 여러 가지 메서드입니다.

반환형 메서드 이름 기능
void addCookie
(Cookie cookie)
응답에 쿠키를 추가합니다.
void addHeader(String name, String value) name과 value를 헤더에 추가합니다.
String encodeURL
(String url)
클라이언트가 쿠키를 지우너하지 않을 때 세션 id를 포함한 특정 URL을 인코딩 합니다.
Collection
<String>
getHeaderNames() 현재 응답의 헤더에 포함된 name을 얻어옵니다.
void sendRedirect
(String location)
클라이언트에게 리다이렉트 응답을 보낸 후 특정 URL로 다시 요청합니다.
String getPathInfo() 클라이언트가 요청 시 보낸 URL과 관련된 추가 경로 정보를 반환합니다.

'《 IT 》 > JSP + Servlet' 카테고리의 다른 글

[Servlet] 서블릿 기초(3)  (1) 2023.12.05
[JSP] doGet(), doPost() 정리  (2) 2023.11.28
[Servlet] 서블릿이란?  (1) 2023.11.27
[Servlet] 서블릿 기초(2)  (2) 2023.11.26