一、概述

  controller的分类:

  

  相关的使用方式和springMVC的类似了,细节不再赘述

二、Controller使用

  1.使用@controller注解 

@Controller
public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "Hi";
}
}

  直接使用会报一个错:

  

  原因是缺少了模板的渲染,springboot支持的模板如下:

  

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

  // 应当避免使用JSP,不然会丧失很多springboot特性!

  2.Thymeleaf模板的使用

    使用官方推荐的这个模板,先引入依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

    // 关于模板的详细使用,将会另开随笔介绍,这里不再赘述

  模板的默认位置是生成的:src/main/resources/templates

  我们在此位置下新建一个HTML文件:index.html:

  

  在代码中返回进行视图渲染:

@Controller
public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "index";
}
}

  重新访问:

  

  // 和web之前的struts2类似,不过由于thymeleaf是HTML模板,故直接根据文件名.html映射

  再者由于现在很多都是前后端分离了,使用模板也可能带来性能上的损耗,所以这里暂时不进行深入

  3.@RestController的使用

    这里就不再赘述了,就是相当于之前的@Controller加上@ResponseBody的组合

@RestController
public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "index";
}
}

  直接返回了字符串,而不进行视图解析

    

    4.@RequestMapping的使用

   使用一个进行映射的场景上面已经有示例,这里介绍其他的特性:

    多个url映射

@RequestMapping(value = {"/hello", "/hi"}, method = RequestMethod.GET)
public String hello() {
return "index";
}

    在类上使用,用于窄化映射

@RestController
@RequestMapping(value = "/say")
public class HelloController { @RequestMapping(value = {"/hello", "/hi"}, method = RequestMethod.GET)
public String hello() {
return "index";
}
}

  

  当然,其实这些映射关系在日志中都会显示,必要时可以进行查看

  

    request的访问方式:

   

  // 测试POST可以通过postman进行

三、请求参数的使用

  基本上和springMVC是一致的:

  

  1.@PathVariable注解

@RestController
public class HelloController { @RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
public String hello(@PathVariable("name") String name) {
return "your name is" + name;
}
}

  使用postman测试(现在postman的chrome插件已经放弃更新了,使用插件形式可以在桌面创建它的快捷方式启动,当然也可以下载独立软件)

  

  2.@RequestParam注解

    这个就是传统的?=xxx形式的了:

@RestController
public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(@RequestParam("name") String name) {
return "your name is:" + name;
}
}

  

  当然,还可以有一些其他的常用特性,例如是否必须、给出默认值:

@RestController
public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(@RequestParam(value = "name", required = false, defaultValue = "jiangbei") String name) {
return "your name is:" + name;
}
}

  3.GetMapping形式的组合注解

    其实也就是组合了method=RequestMethod.GET,进行了简化,相应的还有配套的PostMapping等!

@RestController
public class HelloController { // @RequestMapping(value = "/hello", method = RequestMethod.GET)
@GetMapping(value = "/hello")
public String hello(@RequestParam(value = "name", required = false, defaultValue = "jiangbei") String name) {
return "your name is:" + name;
}
}

springboot快速入门(三)——Controller的使用的更多相关文章

  1. Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析

    一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...

  2. SpringData 基于SpringBoot快速入门

    SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...

  3. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  4. SpringBoot基础篇-SpringBoot快速入门

    SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...

  5. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

  6. SpringBoot快速入门(实战篇一)

    SpringBoot快速入门(一) 一SpringBoot简介 1.spring开发经历的阶段 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 ...

  7. SpringBoot快速入门01--环境搭建

    SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2  选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...

  8. SpringBoot快速入门(一)

    本文内容 SpringBoot概述 SpringBoot快速入门 SpringBoot起步依赖原理分析 SpringBoot配置 SpringBoot整合其他框架 1.SpringBoot概述 1.1 ...

  9. springboot快速入门(四)——数据库操作

    一.Spring-Data-Jpa的引入 先给出官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ IBM ...

  10. springboot快速入门02--Controller编写和测试

    02springboot快速入门--Controller编写和测试 1.新建一个HelloController import org.springframework.boot.SpringApplic ...

随机推荐

  1. leetCode题解之Self Dividing Numbers

    1.题目描述 2.题目分析 简单题目,只要挨个判断该数是不是满足条件即可. 3.代码 vector<int> selfDividingNumbers(int left, int right ...

  2. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  3. tshark----wireshark的命令行工具

    tshark - 转储和分析网络流 概要 tshark的 [  -2  ] [  -a  <捕捉自动停止条件>] ... [  -b  <捕捉环形缓冲区选项>] ... [   ...

  4. 使用CoreData [1]

    使用CoreData [1] 本篇教程能教你从无开始接触CoreData,包括新建工程,创建出实体,增删改查样样都有,属于使用CoreData最初级教程. 1. 创建带有CoreData的工程项目 2 ...

  5. MVC中使用EF的技巧集(一)

    一.建好数据库后,向项目中添加数据模型. 1.右键点击“Models” 文件夹,选择“添加”,再选择“添加新项”. 2.在“添加新项”窗口,选择左边的“数据”,然后再在右边选择“ADO.NET 实体数 ...

  6. 【2017-01-08】QTimer与QThread的调度时间精度

    在最近的项目开发中,我发现有的人喜欢用QThread来实现需要循环执行的工作流,而有的人又喜欢用QTimer来实现. 在表面上,两种实现方式似乎都可以,但我觉得QTimer的精度可能会有问题,首先看一 ...

  7. 占位符 %s

    a = input("Name:")b = input("Age:")c = input("Job:")d = input("ho ...

  8. Java重写&重载

      在学习完类和对象后,接下来就要进入面向对象的内容了,先从重写和重载开始吧.重写(Override)和重载(Overload)是两个不同的概念,也是两个容易混淆的概念,下面具体来说说这两者. 重写( ...

  9. NSProxy应用例子

    动态代理模式的应用很多,特别是在不能修改被代理类的前提下,要对执行某些方法时需要打log或者捕捉异常等处理时,是一个非常方便的方法.只需要少量修改客户端(场景类)代码和添加一个代理类就可以实现,这个符 ...

  10. 3613: [Heoi2014]南园满地堆轻絮

    3613: [Heoi2014]南园满地堆轻絮 Time Limit: 50 Sec Memory Limit: 256 MB Submit: 827 Solved: 534 [Submit][Sta ...