gpt4 book ai didi

java - Spring MVC 不区分大小写的 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:37 26 4
gpt4 key购买 nike

我已经在 Google 和 stackoverflow 上寻找了这个问题的答案,但不幸的是,所提供的解决方案要么假设了很多关于 Spring MVC 和 Java 的先验知识,要么是关于不区分大小写的注释。

因此,我不确定如何使这些解决方案适应我自己的问题,因此提出了这个新问题。

我想做的事听起来很简单。我有一个 dispatcher-servlet.xml 文件,其中包含以下 XML block :

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="*.htm">pageController</prop>
<prop key="*.html">pageController</prop>
<prop key="/cms/*">pageController</prop>
<prop key="/admin/*">adminController</prop>
</props>
</property>
</bean>

我希望 /cms/*/admin/* 键不区分大小写,但是对于 Java 和 Spring MVC 都是新手,我不明白我应该怎么做。

例如,即使有人键入 /CMS//Cms/ 我希望它使用 pageController 而此刻它只会显示一个 404 页面。

谁能准确地向我解释我必须做什么才能达到我想要的结果?

如有任何帮助,我们将不胜感激!

编辑:

根据 Rupok 的 回答,我添加了一个类来扩展 AntPathMatcher

不幸的是,我对此很陌生,我不知道如何“将其设置回 SimpleUrlHandlerMapping”。

有人能给我指出正确的方向吗?

最佳答案

SimpleUrlHandlerMapping 的默认匹配机制是 AntPathMatcher。您可以创建自己的 PathMatcher 实现或继承 AntPathMatcher 并将其设置回 SimpleUrlHandlerMapping。

PathMatcher 接口(interface)实现起来相当简单。

public class CaseInsensitiveAntPathMatcher extends AntPathMatcher {

@Override
public boolean match(String pattern, String string) {
return super.match(pattern.toLowerCase(), string.toLowerCase()); // make this according to your need
}
}

在配置中它看起来像这样:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key=".htm">pageController</prop>
<prop key=".html">pageController</prop>
<prop key="/cms/*">pageController</prop>
<prop key="/admin/*">adminController</prop>
</props>
</property>
<property name="pathMatcher">
<bean class="packagename.CaseInsensitiveAntPathMatcher"/>
</property>
<property name="alwaysUseFullPath" value="true"/>

关于java - Spring MVC 不区分大小写的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com