Spring请求映射:与url模式匹配

Spring请求映射:与url模式匹配,spring,servlets,spring-mvc,Spring,Servlets,Spring Mvc,我有一个带有SpringMVC的web应用程序 web.xml <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <ser

我有一个带有SpringMVC的web应用程序

web.xml

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>/companies/*</url-pattern>
</servlet-mapping>
处理程序匹配:

http://localhost:6122/context/companies/15877/realms/firstRealm
当服务器获取此url时,将调用spring servlet。但它不能匹配控制器方法

但是如果我将请求映射更改为“/{companyId}/realms/{realmName}”,则它与控制器方法匹配。但是,如果没有“/companys”来定义url映射是不好的。能否以某种方式指示Spring查找匹配项,包括servlet中指定的url模式

谢谢。

如果您想在请求映射中使用“公司”,您应该将dispatcher servlet映射到根目录:

<url-pattern>/*</url-pattern>
/*

因为在
路径中有
/companys/*
路径,您告诉容器在URL与定义的模式匹配时调用DispatherServlet。因此,在控制器中,@RequestMapping中不能包含
/companys/
部分-它已经包含在内了。换句话说,不在@RequestMapping中包含
/companys/
部分是在您的情况下执行此操作的正确方法。我无法使用/*或/因为is隐藏了其他servlet和错误页定义。@Rag然后像您以前那样执行。正如我在上面的评论中所写,在
@RequestMapping
中不包含
/companys/
是您的正确选择。
<url-pattern>/*</url-pattern>