https://www.jb51.net/article/114293.html
一个最经典的Controller应该有如下特征
首先应该在类的开头,加上一个@Controller注解,告诉Spring这是一个控制器
然后再对应的处理函数前面加上@RequestMapping,告知这个函数需要对应的URL
接着这个函数传入了一个Model类型的参数,这个参数主要是用于向模板传递数据。
该函数最后返回了一个叫"index"的字符串,表示将调用名为“index”的模板,具体名称取决于模板引擎,比如对于JSP,他将访问”index.jsp”这个文件,对于thymeleaf,他将访问”index.html”这个文件。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* Created by myths on 5/16/17.
*/
@Controller
public class IndexController {
@RequestMapping(value = {"index", "/"})
public String index(Model model) {
return "index";
}
}
@ResponseBody注解
如果我们想返回纯字符串而不是渲染后的模板,那我们可以在需要返回字符串的函数前面加上@ResponseBody这个注解;
如果我们想对于整个类都返回字符串,我们也可以在这个类前面加上@ResponseBody,或者将@Controller注解换成@RestController,均可。
@RequestMapping
基本用法:
这个注解是用来告诉Spring,下面的这个函数或者类是用来映射到那个URL的,通常情况下有下面这些选项:
@RequestMapping(
path = {"/test"},
params = {"name","userId"},
method = {RequestMethod.GET},
consumes = {"text/plain", "application/*"},
produces = "text/plain",
headers = "content-type=text/*"
)
我们可以制定这个路径,参数,方法,头信息,来作为一个Controller的入口。当然,通常我们只需要指定path就行了。
作用对象
这个注解可以注解一个函数,也可以注解一个类。当注解一个类时,类中的所有方法都会在这个基础上再进行过滤:
@Controller
@RequestMapping("/path1")
public class TestController {
@RequestMapping("/path2")
@ResponseBody
public String index() {
return "ok";
}
}
这个函数就能匹配”/path1/path1”这个地址。