Spring MVC中的@Controller和@RequestMapping有什么区别?

时间:2018-04-28 09:23:29

标签: spring spring-mvc

我的MVC中有以下代码;

...
...
@Controller
public class HelloController{

@RequestMapping("/hello")
public ModelAndView sayHelloMethod(){
.....

我点击URI localhostXXXXX\root\hello.htm和DispatcherServlet搜索并映射到此处理程序,即@Controller类并调用" / hello"映射方法。我无法理解DispatcherServlet如何映射到sayHelloWorldMethod?

我试图更改类名和@RequestMapping字符串名称,并且只有当它们都包含" hello"字符串,此示例不起作用。

2 个答案:

答案 0 :(得分:1)

@Controller将使注释的类充当控制器,简单来说,调度程序servlet将查找在启动时初始化的所有bean类中指定的路径。

@Requestmapping将使请求映射到目标方法。假设,我的URI是这样的http://localhost:8080/Home/Hello

我在控制器中的代码是:

440MS

这里Home / Hello是@RequestMapping注释中提到的内容。因此,Dispatcher将在控制器中搜索并将您的请求映射到sayHello方法。

答案 1 :(得分:1)

首先,控制器本身的名称无关紧要。 @Controller注释用于将此组件标记为控制器,以便在映射api调用时使用。

至于@RequestMapping用于设置带注释方法的端点url,这意味着您可以根据需要更改方法的名称(sayHelloMethod)。因此,设置@RequestMapping(value =“/ hello”,method = RequestMethod.GET)会将带有GET请求的“/ hello”url映射到此方法。

因此,唯一重要的名称是@RequestMapping网址的名称