SpringMVC 静态资源处理 mvc:default-servlet-handler
我们先来看看效果,当我把这一行注释掉的时候:
我们来看看页面:
现在我把注释去掉:
、
可以看到的是,这个时候又可以访问了
那么我们就可以想,这个 <mvc:default-servlet-handler />它控制着我们页面的访问,我们说SpringMVC 接收到的请求到达 DispatcherServlet,我们在xml配置的,那么DispatcherServlet 是如何来进行处理的,为什么到达了404
在Spring MVC中,<mvc:default-servlet-handler />标签用于处理静态资源请求。当我们将DispatcherServlet的请求映射配置为"/"时,Spring MVC会捕获所有的请求,包括静态资源的请求。这会导致Spring MVC将静态资源请求当作普通请求处理,从而找不到对应的处理器,导致错误。
为了避免这种情况,可以在Spring MVC的配置文件中添加<mvc:default-servlet-handler />标签。这个标签会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会检查进入DispatcherServlet的URL,如果是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理。
通过这种方式,Spring MVC可以捕获所有URL的请求,同时将静态资源的请求交由Web容器处理,从而实现对静态资源的正确处理。