org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET URL

今天在用SSM水项目的时候,由于采用了前后端分离(html页面依然写在项目里),在使用视图解析器解析时控制台报如上错误。

于是各种百度,大致都说在拦截请求那里用/而不是/*:

<!--拦截所有请求-->
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

我翻了我的配置,确实用的是/啊,但为什么还是不好使,真是百思不得其解。

后来想到是不是视图解析器配的有问题:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/view/"></property>
        <property name="contentType" value="text/html"></property>
        <property name="suffix" value=".html"></property>
    </bean>

嗯,仔仔细细看了80遍也没有问题,看了报错路径解析的确实没问题,但怎么会找不到对应的html文件呢?

一想到html文件,html文件不是静态资源吗?上面配置的是拦截所有请求啊,肯定会把静态资源请求也拦截掉,那我放开静态资源拦截配置:

<mvc:resources mapping="/view/**" location="/view/"></mvc:resources>

再运行项目,访问成功!

总结

以前老是用spring boot做开发,几乎是0配置,像什么视图解析器,拦截请求等我们全都不需要管,现在用SSM开发,需要大量的配置,我就会有点炸裂了,真的是被spring boot惯坏了。

spring boot虽然方便好用,自动配置帮我们做好了配置,但是出问题就会焦头烂额,不知所措,还是得多读spring 相关源码以及工作流程。

posted @ 2020-06-19 01:24  网络小渣渣  阅读(2293)  评论(0)    收藏  举报