javaDEMO
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
Controller 接收请求
主要是注解的使用,DEMO 如下,以上篇文章得到的 DEMO 为基础,点击下载 demojavastudy.zip
主要有以下两种情况
- 要返回页面的
- 只返回 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>
结果如下:
只返回 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;
}
}
结果如下:
DEMO 总评
这是 SpringBoot 做 web 开发的第一步 RestController 的引用,使微服务开发更加简便,通过这个 DEMO 我们可以看到,同一个功能可以用不同的方案解决,分清场景采用不同的方案,可令开发事办功倍.少年,加油吧!!
DEMO 代码下载:
demospringbootcontrollerrestController.zip
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于