在Spring框架从3.2.9升级到5.3.22之后,以.html结尾的URL停止工作



我有一个使用Spring框架3.2.9版本的应用程序。发布并升级到5.3.22,到目前为止,我还没有做任何配置更改。

我的DispatcherServlet.xml和所有的web.xml配置都是原样的。

但在此升级之前,我有一个控制器与@RequestMapping("/ssoLogin"),如果我使用URL"ssoLogin.html">

,它能够找到控制器,但在此升级后,它无法找到。

下面是我的web.xml调度服务器配置

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/auth/*</url-pattern>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>

下面是视图解析器配置

<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<!--To maintain HTTPS state -->
<property name="redirectHttp10Compatible" value="false" />
</bean>

到目前为止没有配置更改,URL以。html扩展名结尾工作正常,升级后它不工作,在浏览器中得到404未发现错误。

谢谢@M。Deinum你的评论帮助了我。

为了解决这个问题,我浏览了下面的链接

https://github.com/spring-projects/spring-framework/issues/24179

https://github.com/lamsfoundation/lams/commit/7ff6d4b34cd71ac45741cb7c8d0c3ef6909eadf4

https://github.com/spring-projects/spring-framework/issues/23915 issuecomment - 563987147

基于此,我在dispatcher-servlet.xml文件

中做了以下更改
<mvc:annotation-driven>
<mvc:path-matching suffix-pattern="true" />
</mvc:annotation-driven>

这就解决了我的问题。

最新更新