SpringBoot笔记:控制类Controller

世上唯一不能复制的是时间,唯一不能重演的是人生,唯一不劳而获的是年龄。该怎么走,过什么样的生活,全凭自己的选择和努力。人生很贵,请别浪费!与智者为伍,与良善者同行。SpringBoot笔记:控制类Controller,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一个类想要变成控制类,只需要在类上加一个@Controller注解即可,其作用为指定请求路径及其对应的处理方法。

一、请求路径和传参

常用注解 :可以直接使用@RequestMapping、@PostMapping、@GetMapping、@PutMapping、@DeleteMapping等注解指定某个方法对应的请求路径,从注解的名称其实就可以看出来,除了第一个注解是可以自定义请求方式的,后面的几个注解的请求方式都已经写死了。

指定请求路径 :以注解@RequestMapping为例,在对应的方法上使用注解 @RequestMapping(value = "/string-demo", method = RequestMethod.GET) 指定请求路径,指定之后,在浏览器输入 http://localhost:8080/string-demo 即可访问。这个注解也可以放在类上,此时指定的请求路径就表示这个类下的所有方法请求路径的前缀了,一个方法最终的完整请求路径就会是“类+方法”的请求路径了。另外,如果method参数不指定的话,这个方法将接收所有满足条件的请求。

接收请求body :@PostMapping这类请求方式如果需要接收请求body,那么需要在对应的方法参数上使用@RequestBody注解进行接收。

接收查询参数 :在请求路径中定义的查询参数,直接在方法中定义一个同名的参数即可。

接收path参数 :如果在url中定义了path参数,那么需要在对应的方法参数上使用@PathVariable注解进行接收。

package com.yun.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

// 指定控制类
@Controller
// 指定url前缀
@RequestMapping(value = "/hello")
public class MvcDemoController {
    // 浏览器访问:http://localhost:8081/hello/string-demo
    @RequestMapping(value = "/string-demo", method = RequestMethod.GET)
    // 自动解析返回值到浏览器
    @ResponseBody
    public String stringDemo() {
        return "String demo";
    }

    // 此url只能使用POST请求方式访问
    @PostMapping(value = "/object-demo")
    @ResponseBody
    // 使用@RequestBody接收请求body
    public Object objectDemo(@RequestBody Object body) {
        return body;
    }

    // 浏览器访问:http://localhost:8080/hello/world?message=zhangsan
    @RequestMapping(value = "/world")
    @ResponseBody
    // 使用同名的参数接收url中的查询参数
    public String hello(String message) {
        return "Hello " + message;
    }

    // 指定path参数
    @RequestMapping(value = "/{name}")
    @ResponseBody
    // 使用注解@PathVariable接收path参数
    public String pathDemo(@PathVariable("name") String name) {
        return "Hello " + name;
    }
}

二、返回值类型

RESTful编程 :如果想要某个方法返回json格式数据,只需要在该方法上加上注解@ResponseBody即可,表示根据返回值类型,自动解析返回值为json格式数据到前端,返回值类型通常有String、Object、Map,也可以将返回值统一定义为Object类型,@ResponseBody注解都可以自动解析后返回。如果想要整个Controller类的所有方法都返回json格式数据,只需要将注解@Controller替换为@RestController即可,该类下的所有方法就不用再使用注解@ResponseBody了。

package com.yun.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping(value = "/hello")
public class MvcDemoController {
    @RequestMapping(value="/map-demo")
    @ResponseBody
    public Map<String, Object> mapDemo() {
        HashMap<String, Object> responseMap = new HashMap<>();
        responseMap.put("message", "Map demo");
        return responseMap;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/235371.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!