Search
🌫️

filter μ „ 흐름

1.
Http11Processor μ—μ„œ μ‹œμž‘!
a.
getHandler().service(request, response)
b.
handler λŠ” μ½”μš”ν…Œ ν•Έλ“€λŸ¬
c.
request 와 response λŠ” μƒμ„±μž(AbstractProcessor)μ—μ„œ 생성함!
2.
catalina μ—μ„œ Valve 듀이 μ°¨λ‘€λ‘œ 싀행됨!
3.
StandardWrapperValve μ—μ„œ ApplicationFilterChain 의 doFilter λ₯Ό μ‹€ν–‰
a.
ApplicationFilterChain μ—λŠ” filters 듀이 있음!
4.
ApplicationFilterCahin 의 doFilter μ—μ„œ internalDoFilter λ₯Ό 호좜
5.
μ—¬κΈ°μ„œ filter λ“€λ§ˆλ‹€ doFilter μ‹€ν–‰!
a.
μ—¬κΈ°κ°€ ν…Œμ½”ν†‘μ—μ„œ λ‚˜μ™”λ˜ pos λΆ€λΆ„
1.
Thread run() μ•ˆμ˜ target.run()
2.
TaskThread (Thread λ₯Ό 상속) 의 WrappedRunnable 의 run() μ‹€ν–‰
3.
ThreadPoolExecutor λ‚΄λΆ€μ˜ run μ‹€ν–‰
4.
SocketProcessorBase 의 doRun()
5.
NioEndPoint 의 SocketProcessor 의 process() μ‹€ν–‰
6.
AbstractProtocol$ConnectionHandler 의 process() μ‹€ν–‰
7.
AbstractProtocolLight service() μ‹€ν–‰
8.
Http11Processor(AbstractProcessor) 의 service() μ‹€ν–‰
9.
CoyoteAdapter 의 invoke() μ‹€ν–‰
10.
Valve λ“€ chaining
a.
StandardEngineValve
b.
Host
c.
Context
d.
Wrapper
11.
StandardWrapperValve μ—μ„œ filterChain.doFilter μ‹€ν–‰
a.
filterChain μ—λŠ” filters 와 dispatcher servlet 있음
12.
filter chaining
a.
ApplicationFilterChain doFilter() β†’ AFC doFilterInternal() β†’ OncePerRequestFilter doFilter() β†’ λ“±λ‘λœ Filter doFilterInternal() μˆœν™˜
13.
pos κ°€ n 보닀 크면 servlet.service() μ‹€ν–‰
14.
HttpServlet service()
15.
FrameworkServlet μ—μ„œ doGet() κ³Ό processRequest() μ‹€ν–‰
16.
DispatcherServlet 도착
2, 3은 tomcat.util.threads
4, 5 λŠ” tomcat.util.net
6, 7 은 tomcat.coyote
8 은 tomcat.coyote.http11
9 λŠ” tomcat.catalina.connector
10 은 tomcat.catalina.core
ApplicationFilterChain 은 tomcat.catalina.core
OncePerRequestFilter λŠ” springframework.web.filter
HttpServlet 은 javax.servlet.http
FrameworkServlet 은 springframework.web.servlet