springboot| 新建 Controller 和 RestController 接收请求

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

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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖
  • Spring

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

    946 引用 • 1460 回帖

相关帖子

欢迎来到这里!

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

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