Bootstrap

SpringBoot基础之控制层Controller详解

SpringBoot基础之控制层Controller详解

1.Controller层主要工作:

从HTTP请求中获取信息,提取参数,并将其分发给不同的处理服务(service层),并向前端返回service层处理后的数据(JSON数据或者ModelAndView对象)。
**注:**这里,第一次接触可能不理解分发是什么意思,其实就是有controller根据实际需求调用不同的service层类函数来处理不同业务。

2.Controller层重要注解:

  • @Controller
  • @RequestMapping
  • @ResponseBody
  • @RestController
  • @GetMapping
  • @PostMapping

3.@Controller

负责标识这个类是个Controller类,Spring检测到@Controller注解时,将其自动注册为Controller对象。

4.@RequestMapping

基本用法
@RequestMapping注解告知Spring这个类或者函数映射到哪个URL,通常@RequestMapping参数有:

@RequestMapping(
		path = { "/test" },
		params = { "name", "userId"},
		method = { RequestMethod.GET},
		consumes = {"text/plain", "application/"},
        produces = "text/plain",
        headers = "content-type=text/"
)

 其中,path表示访问路径,params表示URL携带的参数,method表示请求方式
(1)@RequestMapping参数为空时,表示该函数或者类映射剩余所有页面,也就是404页面
(2)@RequestMapping不指定参数名时,默认为path参数
(3)@RequestMapping的path参数可以是个变量,通过{}来标识。
(4)@PathVaiable用于读取URL中的数据
 

@Controller
public class TestController{
	
	@RequestMapping(path="test/login/{name}/{id}", method=RequestMethod.GET)
	public String loginTest(@PathVariable("name") String strName, @PathVariable("id") Integer id){
				
		return strName +id.toString();
	}
}

5.@ResponseBody

正常情况下,Controller类中函数返回是一个模板对象(页面),但是有时候我们希望返回值数值型(字符串或者Json格式数据),这时就需要添加@ResponseBody注解,@ResponseBody注解可以添加到类或者函数上

6.@RestController、@GetMapping和@PostMapping

这三个注解都是组合注解,其中
@RestController相当于@Controller + @ResposeBody
@GetMapping相当于@RequestMapping(method=RequestMethod.GET)
@PostMapping相当于@RequestMapping(method=RequestMethod.POST)
注:

@GetMapping用于获取信息(可以理解为Select操作), @PostMapping用于更新信息(可以理解为Update)。

这样解释大家可能看得云里雾里,因为我们并没有明确问题的立足点:如@GetMapping是谁向谁获取信息,@PostMapping是谁发出的更新命令,这里需要明确,我们的立足点是前端(也就是前端是动作的发出者,后端是动作的执行者)。也就是:@GetMapping表示前端向后端发出请求数据命令,后端根据具体请求(URL)找到对应的资源并返回给前端。@PostMapping表示前端向后端发送数据,后端根据命令,将给数据持久化到数据库中,实现数据的更新。

7.项目前后台交互的话 无非两种方式

  • 一种普通整体页面提交,比如form提交;
  • 还有一种局部刷新,或者叫做异步刷新,ajax提交;

@Controller就是整体页面刷新提交的处理注解
@RestController就是ajax提交,一般返回json格式

;