🌱

HTTP Cache, gzip, Servlet, Thread 등 학습 테스트

HTTP Cache, gzip, Servlet, Thread 등의 개념을 학습 테스트를 통해 실습해봅니다. HTTP, Servlet, Thread, Tomcat 등의 이론적인 부분은 강의를 통해 확인할 수 있어요.
study
brainbackdoor

1. HTTP Cache, gzip 실습

HomeControllerTest 테스트 메소드를 모두 통과시켜 본다.
미션1: Cache-Control: no-cache, private 설정을 해본다.
미션2: gzip 설정을 해본다.
미션3: ETag 설정을 해본다.
미션4: 캐시 무효화 설정을 해본다.
미션5: Cache-Control: no-store, no-cache, must-revalidate 설정을 해본다.

2. Servlet 실습

ServletTestFilterTest 클래스의 모든 테스트를 통과시킨다.

A. 서블릿 학습 테스트

SharedCounterServlet, LocalCounterServlet 클래스를 열어보고 어떤 차이점이 있는지 확인한다.
init, service, destroy 메서드가 각각 언제 실행되는지 콘솔 로그에서 확인한다.
직접 톰캣 서버를 띄워보고 싶다면 ServletApp 클래스의 main 메서드를 실행한다.
웹 브라우저에서 localhost:8080/shared-counter 경로에 접근 가능한지 확인한다.

B. 필터 학습 테스트

doFilter 메서드는 어느 시점에 실행될까? 콘솔 로그에서 확인한다.
왜 인코딩을 따로 설정해줘야 할까?
위 링크에서 character encoding에 대한 설명을 참고한다.

3. Thread 실습

ThreadTestThreadPoolsTest 클래스의 모든 테스트를 통과시킨다.
미션1: 동기화를 이용해서 쓰레드 간섭을 해결한다.
미션2: synchronized 예약어를 사용하지 않고 Thread safe하게 구성한다.
미션3: newFixedThreadPool와 newCachedThreadPool의 차이를 구분하고 테스트를 통과시킨다.
ThreadAppTest 클래스를 활용하여 Tomcat 설정이 의미하는 바를 확인해봅니다.
1.
ThreadApp 클래스의 애플리케이션을 실행시켜 서버를 띄운다.
2.
ThreadAppTest를 실행시킨다.
3.
ThreadAppTest가 아닌, ThreadApp의 콘솔에서 SampleController가 생성한 http call count 로그를 확인한다.
4.
application.yml에서 설정값을 변경해보면서 어떤 차이점이 있는지 분석해본다.
5.
Thread 분석하기 포스팅을 활용하여 Thread 상태도 확인해본다.