springboot| 新建 Controller 和 RestController 接收请求

本贴最后更新于 1569 天前,其中的信息可能已经时移俗易

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

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 153 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...