웹 애플리케이션 요청 처리 과정 및 관련 기술 개념 정리

씩씩한 조약돌·2025년 5월 27일
0

공부 기록✍️

목록 보기
40/40

전체 흐름

  1. 브라우저에서 localhost:3000을 입력
  2. 해당 url을 처리하는 웹서버(Apache)가 요청을 수신
  3. 웹서버가 정적파일(html, css, js...)를 브라우저로 전달, 브라우저는 정적파일을 로드해 클라이언트에게 보여줌
  4. 웹에서 fetch로 localhost:8080을 호출, WAS(Tomcat)의 서블릿 컨테이너가 수신
  5. 서블릿컨테이너는 HTTP요청을 필터를 거쳐 디스패쳐서블릿에게 전달
  6. 디스패쳐서블릿은 인터셉터를 거쳐 @RequestMapping("/test")가 매핑된 컨트롤러에 요청을 전달

용어정의

1. 서블릿(Servlet)
: HTTP요청을 처리하는 자바 클래스 (JSP파일은 서버가 실행될때 자동으로 자바 서블릿 코드로 변환됨)
2. 디스패쳐서블릿(Dispatcher Servlet)
: 스프링MVC프레임워크에서 제공하는 서블릿. 모든 HTTP요청을 가장 먼저 받아서, 어떤 컨트롤러가 처리할지 분배(dispatch)하는 역할
3. 서블릿 컨테이너(servlet Container)
: 서블릿을 실행시키는 서버환경. HTTP요청을 받아 적절한 서블릿에 전달하고, 서블릿이 생성한 응답을 다시 클리이언트에게 전달해줌 (ex. Tomcat, WebLogic, JEUS 등)

필터의 종류

1. 서블릿필터 (서블릿 컨테이너 레벨)

  • web.xml 또는 @WebFilter 어노테이션 사용
  • java.servlet.Filter
  • 서블릿 필터는 서블릿 스펙에 따른 표준 인터페이스로, 톰캣, 웹로직, JEUS 등 대부분의 WAS에서 지원되지만, WAS마다 설정 방식이나 정책이 다를 수 있다.
<filter>
  <filter-name>testFilter</filter-name>
  <filter-class>com.example.TestFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>testFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
@WebFilter("/*")
public class MyFilter implements Filter {
    @Override
    public void doFilter(...) {
        System.out.println("필터 호출됨!");
        ...
    }
}

2. 스프링필터

  • Spring Boot, Spring MVC 애플리케이션 내에서 @component, FilterRegistrationBean으로 등록해서 사용
  • ex. CorsFilter, CharacterEncodingFilter...

인터셉터

  • 인증 및 인가 관련 후처리 수행 (예: 요청에 포함된 쿠키나 세션을 확인해 사용자 인증 상태를 점검하고, 권한이 적절한지 확인)
profile
씩씩하게 공부중 (22.11~)

0개의 댓글