package com.example.demo.controller;

import java.util.HashMap;
import java.util.Map; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import com.example.demo.domain.Person; @Controller
@RequestMapping(value = "/return")
public class HelloController { /**
* @Controller 返回一个页面
*
* Step 1: spring-boot-starter-thymeleaf
* Step 2: 配置thymeleaf视图解析器:application.properties
* Step 3: 设置非严格html5:net.sourceforge.nekohtml
* Step 4: 编写此控制器
* Step 5: 使用thymeleaf语法编写html模板,Spring 默认会去 resources 目录下 templates 目录下找
*
* URL: http://localhost:8080/return/hello1?name=team
*/
@GetMapping(value = "/hello1")
public String hello1(Model model, String name) {
model.addAttribute("name", name);
return "hello";
} /**
* @Controller +@ResponseBody 返回JSON 或 XML 形式数据
* @Controller +@ResponseBody= @RestController
*
* 使用 post 请求访问 http://localhost:8080/return/hello2
* body 中附带以下参数,后端会以json 格式将 person 对象返回
*
{
"name": "team",
"age": 1
}
*
*/
@PostMapping(value = "/hello2")
@ResponseBody
public Person hello2(@RequestBody Person person) {
return person;
} /**
* Model本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url
* 地址别名或者物理跳转地址
*
* @param model
* 一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类
* @return 跳转url地址别名或者物理跳转地址
*/
@RequestMapping(value = "/index1")
public String index1(Model model) {
model.addAttribute("result", "后台返回index1");
return "result";
} /**
* ModelMap对象主要用于传递控制方法处理数据到结果页面,类似于request对象的setAttribute方法的作用。 用法等同于Model
*
* @param model
* @return 跳转url地址别名或者物理跳转地址
*/ @RequestMapping(value = "/index2")
public String index2(ModelMap model) {
model.addAttribute("result", "后台返回index2");
return "result";
} /**
* ModelAndView主要有两个作用 设置转向地址和传递控制方法处理结果数据到结果页面
* @return 返回一个模板视图对象
*/
@RequestMapping(value = "/index3")
public ModelAndView index3() {
ModelAndView mv = new ModelAndView("result");
// ModelAndView mv = new ModelAndView();
// mv.setViewName("result");
mv.addObject("result", "后台返回index3");
return mv;
} /**
* map用来存储递控制方法处理结果数据,通过ModelAndView方法返回。
* 当然Model,ModelMap也可以通过这种方法返回
* @return 返回一个模板视图对象
*/
@RequestMapping(value = "/index4")
public ModelAndView index4() {
Map<String, String> map = new HashMap<String, String>();
map.put("result", "后台返回index4");
return new ModelAndView("result", map);
}
}
package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/return2")
public class DomainController {
/**
* @RestController 返回JSON 或 XML 形式数据
* 访问:http://localhost:8080/return2/say
*/
@RequestMapping(value="say", method=RequestMethod.GET)
public String say(){
return "ok";
}
}

@RestController vs @Controller的更多相关文章

  1. RestController 和Controller的区别

    restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...

  2. restful风格,restcontroller与controller

    restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...

  3. @restcontroller与@controller的区别

    这段时间偷偷看了下spring boot.结果引用模板时没注意,把@restcontroller替换了@controlle,结果模板出不来.终究原因是spring的知识不到位. 下面说说这2的说明和区 ...

  4. 注解@RestController与@Controller的区别

    开发RESTful API 时,一般都会在Controller上加上@Controller注解,但是有时候加上@RestController,当同事问为什么的时候,我也一脸懵逼,默默的看了资料,现在就 ...

  5. @RestController 与 @Controller 注解区别

    文章来源:https://www.cnblogs.com/hello-tl/p/9202658.html @RestController注解相当于@ResponseBody + @Controller ...

  6. 浅谈@RestController和@Controller的区别

    在做Spring MVC开发时,如果对@RestController或者@Controller这两个注解理解不够清晰的话,就难免会出现用混的情况.而混用的结果往往是无法实现期望的跳转结果或者是直接将跳 ...

  7. RestController和Controller的区别

    知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1) 如果只是使用@RestController注解Controller,则Co ...

  8. @Restcontroller与@controller区别

    @RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1)如果只是使用@RestController注解Controller,则Control ...

  9. 说说Spring中的 @RestController 和 @Controller

    Spring MVC执行流程已是JAVA面试中老生常谈的问题,相信各位小伙伴也是信手拈来.今天我们来谈谈另一个面试中必会必知的问题: @RestController和@Controller的区别? S ...

  10. @RestController和@Controller区别

    1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewRe ...

随机推荐

  1. bzoj4009 [HNOI2015]接水果 整体二分+扫描线+树状数组+dfs序

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4009 题解 考虑怎样的情况就会有一个链覆盖另一个链. 设被覆盖的链为 \(a - b\),覆盖 ...

  2. c++11 快速退出

    C++程序中有以下几种推出方式:terminate abort exit terminate: 实际上是c++语言中异常处理的一部分(包含在<exception>头文件中),一般而言,没有 ...

  3. HashMap接口测试

    package com.iotek.map; import java.util.Collection;import java.util.HashMap;import java.util.Map;imp ...

  4. 阿里HBase的数据管道设施实践与演进

    摘要:第九届中国数据库技术大会,阿里巴巴技术专家孟庆义对阿里HBase的数据管道设施实践与演进进行了讲解.主要从数据导入场景. HBase Bulkload功能.HImporter系统.数据导出场景. ...

  5. 图片没有.png或者jpg后缀能不能加载?

    是可以的,如:http://mmbiz.qpic.cn/mmbiz_png/MW1VecOrnw6HUMvEUNUxibLVtbY2vHF8QkFyviaickh8pnsapQ8gOosdq13SBX ...

  6. JavaScript学习第一篇

    在学习之前让我们了解了解JavaScript的由来 Javascript是一种web技术,最初起名叫LiveScript,它是Netscape开发出来一种脚本语言,其目的是为了扩展基本的Html的功能 ...

  7. 【2019 Multi-University Training Contest 5】

    01: 02:https://www.cnblogs.com/myx12345/p/11649221.html 03: 04:https://www.cnblogs.com/myx12345/p/11 ...

  8. sql常用 语句总结

    一,插入一个新字段:ALTER TABLE +表名+ADD  COLUMN(字段名+ 类型) sql1 = 'ALTER TABLE klkl_4s_shop ADD COLUMN (name_rea ...

  9. 写的一个双向链表,测试OK

    #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct DoubleLi ...

  10. poj1258Agri-Net(最小生成树)

    题目链接:http://poj.org/problem?id=1258 Description Farmer John has been elected mayor of his town! One ...