오전
서블릿의 주요 클래스와 메서드
✓ 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 메서드 : 필터에서 구현하는 로직을 작성하는 메서드. 이 메서드로 다음 필터,서블릿으로 수행차례를 넘기거나 할 수 있다.
웹 애플리케이션의 전반적인 동작 흐름
- 클라이언트에서 요청을 한다.
- web.xml 파일 또는 어노테이션에 정의된 서블릿과 필터들이 초기화된다.
- 이때 jsp 가 먼저 실행되기 보다는 index.do 라는 특정 자바코드가 있는 경로로 접근한다.(이거는 어떻게 설정하느냐에 따라 다름.
- 서블릿 파일안의 자바코드를 실행 후 데이터를 준비한다.
- index.do 파일을 실행후 index.jsp 파일로 포워딩을 하면 서블릿에서 준비해둔 데이터가 request객체에 저장된 상태로 index.jsp에 전달되어 jsp 페이지에서 이 데이터가 사용가능해진다.
- 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 |