一尘不染

使用相同的请求映射访问多个控制器

spring-mvc

请找到我的HomeController和DemoController

class HomeController{
@RequestMapping(value="index")
public void home(){
}
}

class DemoController{
@RequestMapping(value="index")
public void demo(){
}
}

当我尝试发送索引请求时,将执行哪个请求?我想知道我们如何对多个控制器具有相同的请求映射值


阅读 220

收藏
2020-06-01

共1个答案

一尘不染

Spring Web MVC中,这是不可能的。每个映射在您的上下文中必须是唯一的。如果没有,您将RuntimeException在上下文初始化期间收到。

您甚至不能使用参数来区分端点,因为在搜索合适的处理程序(适用于Servlet环境)时不会对它们进行评估。从@RequestMappingjavadoc:

在Servlet环境中,参数映射被视为在类型级别强制执行的限制。主路径映射(即指定的URI值)仍然必须唯一地标识目标处理程序,而参数映射仅表示调用处理程序的前提条件。

请注意,您可以执行相反的操作,因此多个URL可以指向同一处理程序。

2020-06-01