SpringMVC中的方法处理-相同url路径

SpringMVC中的方法处理-相同url路径,url,spring-mvc,path,Url,Spring Mvc,Path,我正在使用SpringMVC。 我有一个具有以下url的人员列表: 我的控制器: @Controller @RequestMapping("/persons") public class PersonController { @RequestMapping(value="/list", method=RequestMethod.GET) public String allPersons(Model model){ .... } 现在,我想添加一个特定人的视图,url如下:

我正在使用SpringMVC。 我有一个具有以下url的人员列表:

我的控制器:

@Controller
@RequestMapping("/persons")
public class PersonController {

    @RequestMapping(value="/list", method=RequestMethod.GET)
    public String allPersons(Model model){
....
}
现在,我想添加一个特定人的视图,url如下:

如果我尝试使用url:

    @RequestMapping(value="/{firstname}", method=RequestMethod.GET)
    public String getPersonInfo(@PathVariable("fname") String firstname)
    ....

会有冲突,因为有两个GET URL具有相同的路径,对吗?如何在不更改url的情况下解决此问题?

我建议做一些不同的事情。例如,使用以下URL:

那不是很好吗

因此,您可以尝试这样的映射:

@Controller
public class PersonController {
    @RequestMapping(value="/persons", method=RequestMethod.GET)
    public String allPersons(Model model) {
    ...
    }

    @RequestMapping(value="/person/{firstname}", method=RequestMethod.GET)
    public String getPersonInfo(@PathVariable("fname") String firstname) {
    ...
    }
}

你不必把@请求映射放在你的控制器上(虽然你可以)。Grzegorz的建议是有效的,你应该考虑一下。但是,为了回答您的问题,您提供的代码示例应该可以很好地工作,因为更具体的匹配(具有更少的模式)比不太具体的匹配更好

因此,如果传入的URL是/persons/list,则应调用allPersons()方法