程序员社区

【SpringMvc学习及总结04】url-pattern=/ 为什么不能处理静态资源?

在Tomcat的E:\Tomcat\apache-tomcat-9.0.24\conf下的web.xml文件有两个类:

一个类是DefaultServlet,这个类的url-pattern=/
这个类是处理静态资源的(除了jsp和servlet外都是静态资源)

<servlet>
   <servlet-name>default</servlet-name>
   <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
   <servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

另一个类是JspServlet,这个类的url-pattern=*.jsp
这个类是处理jsp资源的

<servlet>
   <servlet-name>jsp</servlet-name>
   <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
   <servlet-mapping>
   <servlet-name>jsp</servlet-name>
   <url-pattern>*.jsp</url-pattern>
   <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

而在我们web.xml中配置的DispatcherServlet这个类中的url-pattern=/

<servlet>
   <servlet-name>dispatcherServlet</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>dispatcherServlet</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

所有的项目的web.xml都继承了Tomcat中的web.xml,如果我们的项目在web.xml中也配置了url-pattern=/就相当于禁用了Tomcat的web.xml的url-pattern=/

即前端控制器的/禁用了DefaultServlet中的/,所以静态资源无效了,不能处理了。

那么为什么jsp文件能处理呢?
因为我们只是禁用了DefaultServlet,但是并没有禁用JspServlet,所以仍然能处理jsp文件。

赞(1) 打赏
未经允许不得转载:IDEA激活码 » 【SpringMvc学习及总结04】url-pattern=/ 为什么不能处理静态资源?

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区