今天刚刚开始写springMVC的helloworld,按着视频一步一步操作,结果出现了以下问题
二月 29, 2020 8:44:36 下午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: No mapping found for HTTP request with URI [/SpringMVC_02/index.html] in DispatcherServlet with name 'springDispatcherServlet'
细心排查,发现,仅仅是自己将默认的index.jsp(视频中写的是jsp文件)换成了index.html文件
问题原因:处理*.jsp是tomcat做的事,所有项目的web.xml都是继承服务器的web.xml
DefaultServlet是Tomcat处理静态资源的。
除过jsp和servlet外剩下的都是静态资源:
index.html:静态资源,Tomcat就会在服务器下找到这个资源并返回
可以说是,我们的前端控制器的 / 覆盖了服务器中的DefaultServlet
1)服务器的web.xml中有一个DefaultServlet是url-pattern=/
2)我们配置中前端控制器url-patter=/
静态资源会来到DispatcherServlet(前端控制器)看哪那个方法的RequestMapping是这个index.html
3)为什么jsp又能访问;是因为我们没有覆盖服务器中的JspServlet的配置
4)/* 直接就是拦截所有请求
解决办法:在web.xml文件中告诉服务器,".html"文件不需要拦截,即在web.xml文件中加上一下语句
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>