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)@RequestParam用于读取URL中的数据

@Controller
pbulic class TestController{

		@RequestMapping(path = "test/login" , method=RequestMethod.GET)
		public String loginTest(@RequestParam(value="name",required = false,defaultValue = "tom") String strName,@RequestParam(value="id",required = false,defaultValue = "123") 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格式

经验分享 程序员 微信小程序 职场和发展