springboot|新建Controller和RestController接收请求

javaDEMO

Java基础Demo 站: https://www.javastudy.cloud
Java中高级开发博客: https://www.lixiang.red
Java学习公众号: java技术大本营
java_subscribe

Controller接收请求

主要是注解的使用,DEMO如下,以上篇文章得到的DEMO为基础,点击下载demojavastudy.zip
主要有以下两种情况

  1. 要返回页面的
  2. 只返回json数据(现在和前端交互基本上都是用的json)

要返回页面的

先看要返回页面的,通用写法如下:

/**
 * @Author https://www.javastudy.cloud
 * @CreateTime 2019/11/2
 **/
@Controller
public class HomeController {

    /**
     * 这种是返回页面的,要注意以下几点
     * 1.Controller上的注解是 @Controller
     * 2.方法的返回值直接是String
     * 3.返回值里面是页面的文件名,和 resources/templates 下面的对应的文件名是一致的
     *  html文件也是放在resources/templates这个目录下
     * @return
     */
    @RequestMapping("/home/showHome")
    public String showHome(){
        return "home";
    }

    /**
     * 如果Controller需要往页面上传值的话
     * 方法1:可以在入参处加一个model
     * @param model
     * @return
     */
    @RequestMapping("/home/showHomeWithModel")
    public String showHomeWithModel(Model model){
        model.addAttribute("key","value");
        return "homeWithModel";
    }

    /**
     * 如果Controller需要往页面上传值的话
     * 方法2:可以返回值定义成ModelAndView
     * @return
     */
    @RequestMapping("/home/showHomeWithModelAndView")
    public ModelAndView showHomeWithModelAndView(){
        ModelAndView modelAndView = new ModelAndView("homeWithModel");
        //向页面上添加数据
        modelAndView.addObject("key","modelAndViewValue");
        return modelAndView;
    }
}

html页面代码如下:
home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
这是home页面
</body>
</html>

homeWithModel.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div th:text="${key}"></div>
</body>
</html>

结果如下:
image.png
image.png
image.png

只返回json数据的

/**
 * @Author https://www.javastudy.cloud
 * @CreateTime 2019/11/3
 **/
@Controller
public class HomeControllerJSON {

    /**
     * 第一种方法是 @Controller 注解加上 @ResponseBody注解
     * 返回值可以直接用Map , 也可以用转成String之后的JSON串,推荐用后者
     * @return
     */
    @RequestMapping("home/showHomeData")
    @ResponseBody
    public Map showHomeData(){
        Map<String,String> map = new HashMap<>();
        map.put("key","value1");
        return map;
    }

    /**
     * 额外引用了 FastJson的包
     * compile group: 'com.alibaba', name: 'fastjson', version: '1.2.62'
     * @return
     */
    @RequestMapping("home/showHomeDataWithStr")
    @ResponseBody
    public String showHomeDataWithStr(){
        Map<String,String> map = new HashMap<>();
        map.put("key","value2");
        return JSON.toJSONString(map);
    }
}

/**
 * 这种是类上用@RestController 注解
 * 方法上就不用加@ResponseBody了
 */
@RestController
class HomeControllerJSON2{

    @RequestMapping("home/showHomeData2")
    public Map showHomeData(){
        Map<String,String> map = new HashMap<>();
        map.put("key","valueInRestController");
        return map;
    }
}

结果如下:
image.png
image.png
image.png

DEMO总评

这是SpringBoot做web开发的第一步RestController的引用,使微服务开发更加简便,通过这个DEMO我们可以看到,同一个功能可以用不同的方案解决,分清场景采用不同的方案,可令开发事办功倍.少年,加油吧!!
DEMO代码下载:
demospringbootcontrollerrestController.zip


标题:springboot|新建Controller和RestController接收请求
作者:xiaodaojava
地址:https://www.javastudy.cloud/articles/2019/11/02/1572707309375.html