如何在Spring MVC中映射多个控制器

16

我有两个控制器在我的应用程序中,一个是userController,其中我有添加、删除和更新方法;另一个是studentController,其中我也有添加、删除和更新方法。

在这两个控制器的方法中,所有的映射都使用@RequestMapping注解相同。我有一个疑惑:如果我们从JSP传递相同的操作,那么Dispatcher如何找到相应的控制器呢?如果有人能用例子描述这个过程,将不胜感激。


3
添加你的代码。我们需要有一个东西来工作,否则人们会说只是去阅读文档。 - Adam Gent
2个回答

37

您需要在类级别设置一个 @RequestMapping 注解,该注解的值将成为所有请求到达该控制器的前缀,例如:

您可以拥有一个用户控制器

@Controller
@RequestMapping("user")
public class UserController {

    @RequestMapping("edit")
    public ModelAndView edit(@RequestParam(value = "id", required = false) Long id, Map<String, Object> model) {
        ...
    }
}

和一个学生控制器

@Controller
@RequestMapping("student")
public class StudentController {

    @RequestMapping("edit")
    public ModelAndView edit(@RequestParam(value = "id", required = false) Long id, Map<String, Object> model) {
        ...
    }
}

两个控制器具有相同的方法和相同的请求映射,但您可以通过以下URI访问它们:

yourserver/user/edit
yourserver/student/edit

hth


我可以将每个控制器放在每个包中,还是需要将所有控制器放在同一个包中? - KpsLok
1
@BrennoLeal 不需要把所有的控制器都定义在同一个包下面。您可以根据需求编写它们。您只需要使用 @Controller 注释这些控制器,Spring 就会知道它们在哪里(在不同的包中)。 - Rohit

0

我们可以拥有任意数量的控制器,URL映射将决定调用哪个控制器。

请参考这里获取详细的Spring MVC多控制器示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接