10月 02, 2026 4:58:51 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-127.0.0.1-auto-1"]
10月 02, 2026 4:58:51 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service [Tomcat]
10月 02, 2026 4:58:51 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet engine: [Apache Tomcat/10.1.46]
10月 02, 2026 4:58:51 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring DispatcherServlet 'mvc'
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.FrameworkServlet initServletBean
信息: Initializing Servlet 'mvc'
10月 02, 2026 4:58:51 下午 org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 8.0.2.Final
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.FrameworkServlet initServletBean
信息: Completed initialization in 315 ms
10月 02, 2026 4:58:51 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-nio-127.0.0.1-auto-1-63605"]
ENV java=21.0.10 spring=6.2.11 tomcat=10.1.46.0 base=http://127.0.0.1:63605
TRACE filter REQUEST /path/abc thread=http-nio-127.0.0.1-auto-1-exec-1
TRACE pre REQUEST /path/abc context=true thread=http-nio-127.0.0.1-auto-1-exec-1
TRACE post REQUEST thread=http-nio-127.0.0.1-auto-1-exec-1
TRACE complete REQUEST thread=http-nio-127.0.0.1-auto-1-exec-1
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-1
HTTP GET /path/abc status=200 content-type=text/plain;charset=ISO-8859-1 body=abc
CHECK PASS 26 path variable matches
TRACE filter REQUEST /absent thread=http-nio-127.0.0.1-auto-1-exec-2
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.DispatcherServlet noHandlerFound
警告: No mapping for GET /absent
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleNoHandlerFoundException
警告: No endpoint GET /absent.
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-2
HTTP GET /absent status=404 content-type=text/html;charset=utf-8 body=<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> No endpoint GET &#47;absent.</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.1.46</h3></body></html>
CHECK PASS 26 absent path 404
TRACE filter REQUEST /hello thread=http-nio-127.0.0.1-auto-1-exec-3
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException
警告: Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported]
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-3
HTTP POST /hello status=405 content-type=text/html;charset=utf-8 body=<!doctype html><html lang="en"><head><title>HTTP Status 405 – Method Not Allowed</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 405 – Method Not Allowed</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> Method &#39;POST&#39; is not supported.</p><p><b>Description</b> The method received in the request-line is known by the origin server but not supported by the target resource.</p><hr class="line" /><h3>Apache Tomcat/10.1.46</h3></body></html>
CHECK PASS 26 method 405 retains Allow
TRACE filter REQUEST /json thread=http-nio-127.0.0.1-auto-1-exec-4
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException
警告: Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'text/plain' is not supported]
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-4
HTTP POST /json status=415 content-type=text/html;charset=utf-8 body=<!doctype html><html lang="en"><head><title>HTTP Status 415 – Unsupported Media Type</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 415 – Unsupported Media Type</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> Content-Type &#39;text&#47;plain&#39; is not supported.</p><p><b>Description</b> The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.</p><hr class="line" /><h3>Apache Tomcat/10.1.46</h3></body></html>
CHECK PASS 26 unsupported consumes 415
TRACE filter REQUEST /hello/ thread=http-nio-127.0.0.1-auto-1-exec-5
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.DispatcherServlet noHandlerFound
警告: No mapping for GET /hello/
10月 02, 2026 4:58:51 下午 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleNoHandlerFoundException
警告: No endpoint GET /hello/.
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-5
HTTP GET /hello/ status=404 content-type=text/html;charset=utf-8 body=<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> No endpoint GET &#47;hello&#47;.</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.1.46</h3></body></html>
CHECK PASS 26 trailing slash is distinct by default
TRACE filter REQUEST /path/a%20b thread=http-nio-127.0.0.1-auto-1-exec-6
TRACE pre REQUEST /path/a%20b context=true thread=http-nio-127.0.0.1-auto-1-exec-6
TRACE post REQUEST thread=http-nio-127.0.0.1-auto-1-exec-6
TRACE complete REQUEST thread=http-nio-127.0.0.1-auto-1-exec-6
TRACE filter-exit REQUEST thread=http-nio-127.0.0.1-auto-1-exec-6
HTTP GET /path/a%20b status=200 content-type=text/plain;charset=ISO-8859-1 body=a b
CHECK PASS 26 encoded space decoded within segment
HTTP GET /path/a%2Fb status=400 content-type=text/html;charset=utf-8 body=<!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad Request</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 400 – Bad Request</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> Invalid URI: [The encoded slash character is not allowed]</p><p><b>Description</b> The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).</p><hr class="line" /><h3>Apache Tomcat/10.1.46</h3></body></html>
CHECK PASS 26 Tomcat rejects encoded slash before MVC
MAPPING Ambiguous mapping. Cannot map 'blog.spring.mvc.MvcLab$Duplicate@718d57d0' method 
blog.spring.mvc.MvcLab$Duplicate#second()
to {GET [/same]}: There is already 'blog.spring.mvc.MvcLab$Duplicate@718d57d0' bean method
blog.spring.mvc.MvcLab$Duplicate#first() mapped.
CHECK PASS 26 duplicate mapping registration fails
CHECK PASS producer executor terminated
10月 02, 2026 4:58:51 下午 org.apache.coyote.AbstractProtocol pause
信息: Pausing ProtocolHandler ["http-nio-127.0.0.1-auto-1-63605"]
10月 02, 2026 4:58:51 下午 org.apache.catalina.core.StandardService stopInternal
信息: Stopping service [Tomcat]
10月 02, 2026 4:58:51 下午 org.apache.catalina.core.ApplicationContext log
信息: Destroying Spring FrameworkServlet 'mvc'
10月 02, 2026 4:58:51 下午 org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalsForLeaks
警告: You need to add "--add-opens=java.base/java.lang=ALL-UNNAMED" to the JVM command line arguments to enable ThreadLocal memory leak detection. Alternatively, you can suppress this warning by disabling ThreadLocal memory leak detection.
10月 02, 2026 4:58:51 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesRmiTargets
警告: You need to add "--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" to the JVM command line arguments to enable RMI Target memory leak detection. Alternatively, you can suppress this warning by disabling RMI Target memory leak detection.
10月 02, 2026 4:58:51 下午 org.apache.coyote.AbstractProtocol stop
信息: Stopping ProtocolHandler ["http-nio-127.0.0.1-auto-1-63605"]
10月 02, 2026 4:58:51 下午 org.apache.coyote.AbstractProtocol destroy
信息: Destroying ProtocolHandler ["http-nio-127.0.0.1-auto-1-63605"]
CHECK PASS web application context closed
CHECK PASS MVC task executor terminated
CHECK PASS Tomcat listening port closed
CHAPTER 26 PASS checks=12
