一、概述

  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. Ubuntu 安装python

    1. wget http://mirrors.sohu.com/python/3.6.0/Python-3.6.0.tar.xz wget https://www.python.org/ftp/pyt ...

  2. error MSB3552: Resource file "**/*.resx" cannot be found. [/ConsoleApp1.csproj]

    问题场景: 练习在docker下操作netcore,镜像为centos7,安装完netcore sdk 2.2后,执行操作: dotnet new consoledotnet run 出现报错: /u ...

  3. windows zend_guard+apache no ssl+php no Thread Safe fastcgi模式 环境配置

    最近公司要做代码加密,就采用ZEND GUARD 方式加密代码 并进行显示 此文为总结,以备自己以后查看和给需要的同学们参考 采用的php为5.3版本  由于现在加密的更改, 能支持zend guar ...

  4. 使用 Azure CLI 创建 Linux 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...

  5. selenium&phantomjs实战--漫话爬取

    为什么直接保存当前网页,而不是找到所有漫话链接,再有针对性的保存图片? 因为防盗链的原因,当直接保存漫话链接图片时,只能保存到防盗链的图片. #!/usr/bin/env python # _*_ c ...

  6. mysql-5.7 持久化统计信息详解

    一.持久化统计信息的意义: 统计信息用于指导mysql生成执行计划,执行计划的准确与否直接影响到SQL的执行效率:如果mysql一重启 之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就 ...

  7. windows 下安装nodejs 要怎么设置环境变量

    windows 下安装nodejs 了,也安装了npm, 但是有时候切不能直接用request(‘ws’)这一类的东西.我觉得是确实环境变量或其他设置有问题,能否给个完整的设置方案: 要设置两个东西, ...

  8. Error creating bean with name xxxx,xxxx must be provided

    原因: 继承父类的bean注入是set,get方法 问题: 自己的controller不能创建,因为需要的bean没有创建 解决方法: bean 注入,通过构造函数调用父类的set方法

  9. The expression of type Integer is unboxed into int

    问题:The expression of type Integer is unboxed into int 原因:java的包装类,方法里面要的是Integer,传入的参数确实int类型 解决方案: ...

  10. TreeSet 比较器排序 自定义对象

    package cn.itcast.day21.treeset2; import java.util.Comparator; import java.util.TreeSet; /* * TreeSe ...