Developer Note/국비과정 수업내용 정리&저장

24년 10월 30일

DH_PARK 2024. 11. 4. 01:13

오전

서블릿의 주요 클래스와 메서드

✓ HttpServlet: 서블릿을 만들기 위해 반드시 상속해야 할 필수 클래스

✓ HttpServletRequest: 클라이언트가 데이터를 입력하거나 클라이언트의 정보에 대한 요청 값을 가지고 있는 클래스

✓ HttpServletResponse: 클라이언트가 요청한 정보를 처리하고 다시 응답하기 위한 정보를 담고 있는 클래스

✓ HttpSession: 클라이언트가 세션을 정보로 저장하고 세션 기능을 유지하기 위해서 제공되는 클래스

서블릿의 기본적인 메서드

void init() 서블릿의 객체가 생성 될 때 호출되는 메서드.

void destroy() 서블릿의 객체가 메모리에서 사라질 때 호출되는 메서드
void service(request, response) 서블릿의 요청이 있을 때 호출되는 메서드
void doGet(request, response) html에서 form의 메서드가 get일때 호출되는 메서드
void doPost(request, response) html에서 form의 메서드가 post일때 호출되는 메서드

서블릿의 service 메서드의 기능

사용자 요청을 받을 때 서블릿 컨테이너에 의해 가장 먼저 자동으로 호출되며 모든 http 요청이 service 메서드를 거쳐서 처리된다.

이 때 service 메서드는 요청 메서드에 따라 해당 요청을 적절한 메서드로 분배한다.

사용자 정의 service 메서드 재정의:

  • 기본적으로는 HttpServlet 클래스에서 service 메서드가 이미 구현되어 있어, 서블릿 개발자는 doGet, doPost 등의 메서드를 재정의하여 요청을 처리하는 것이 일반적입니다.
  • 그러나 특별한 경우에 service 메서드를 재정의하여 모든 요청을 직접 처리할 수도 있습니다. 이 경우 doGet, doPost 등을 무시하고, 모든 요청을 하나의 메서드에서 처리하는 방식이 됩니다.

통상적으로는 service 메서드 재정의는 별로 안하는것 같다.

서블릿 필터란?

클라이언트로부터 서버로 요청이 들어오기 전에 서블릿을 거쳐서 필터링 하는것 ?

웹과 관련된 공통 관심사를 처리할 때 주로 사용된다.

필터는 기본적으로 Servlet 이전에 호출된다.

필터는 서블릿이 호출되기전 수행되게 하는 전처리,

호출 후에 수행되는 후처리 구현 방식이 있다.

필터는 체인(chain) 으로 구성되어 여러 개의 필터를 자유롭게 추가할 수 있다.

※ 필터란 이름처럼 말그대로 서블릿이 실행되기전 필터처럼 조건을 걸어 걸러서 서블릿을 호출할 때 사용한다.

필터 사용법

자바 파일에서 Filter라는 interface 를 implements한다.

또는 어노테이션으로 @WebFilter(”/*”) 같은 방식으로 지정 범위를 지정하고 사용한다.

이 때 적절하지 않은 요청이라고 판단하면 서블릿 호출 하지 않고 그대로 요청을 끝낼 수도 있다.

예) 로그인 정보가 일치하지 않을 경우

필터 흐름

HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러

여러 필터 파일이 있을 경우 실행 순서

web.xml 에 정의된 순서대로 실행된다.

web.xml 에서 필터가 먼저 등록된 순서대로 필터가 실행, 마지막 필터까지 순차적 실행 후에 최종 서블릿으로 요청이 전달된다.

필터에서 전처리와 후처리를 나누는 법

간단히 doFilter메서드의 위치를 기준으로 전처리 후처리를 나눌 수 있다.

  • 전처리 : 다음 필터나 서블릿에 요청이 전달되기 전에 실행되므로 클라이언트의 요청을 처리하기 위한 초기 작업을 수행하는데 사용된다.
  • 후처리 : 서블릿에서 응답을 생성하여 반환한 후에 실행된다. 서버의 응답을 처리하는 작업에 사용됨.

doFilter 메서드 : 필터에서 구현하는 로직을 작성하는 메서드. 이 메서드로 다음 필터,서블릿으로 수행차례를 넘기거나 할 수 있다.


웹 애플리케이션의 전반적인 동작 흐름

  1. 클라이언트에서 요청을 한다.
  2. web.xml 파일 또는 어노테이션에 정의된 서블릿과 필터들이 초기화된다.
  3. 이때 jsp 가 먼저 실행되기 보다는 index.do 라는 특정 자바코드가 있는 경로로 접근한다.(이거는 어떻게 설정하느냐에 따라 다름.
  4. 서블릿 파일안의 자바코드를 실행 후 데이터를 준비한다.
  5. index.do 파일을 실행후 index.jsp 파일로 포워딩을 하면 서블릿에서 준비해둔 데이터가 request객체에 저장된 상태로 index.jsp에 전달되어 jsp 페이지에서 이 데이터가 사용가능해진다.
  6. index.jsp가 HTML 코드로 변환 , 서블릿에서 제공한 데이터와 함께 응답으로 전달됨.

※그러니까 서블릿을 실행시키고 다음 jsp 를 실행시킨다 이런 느낌이 아니고

백엔드역할을 맡은 서블릿에서 데이터를 담아 jsp 로 포워딩처리를 하면

데이터 정보가 그대로 다 담겨있기 때문에 jsp 파일에서 request 객체안 데이터를 가져와서 사용하게 된다.

그리고 jsp 에서 스크립틀릿이라던가 이런 문법을 이용해 데이터를 사용하고 html에 나타내준다.

'Developer Note > 국비과정 수업내용 정리&저장' 카테고리의 다른 글

24년 11월 1일  (3) 2024.11.05
24년 10월 31일  (1) 2024.11.04
24년 10월 29일  (0) 2024.11.03
24년 10월 25일  (0) 2024.10.25
24년 10월 22일  (0) 2024.10.23