springboot快速入门(三)——Controller的使用
一、概述
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的使用的更多相关文章
- Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析
一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...
- SpringData 基于SpringBoot快速入门
SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- SpringBoot基础篇-SpringBoot快速入门
SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...
- Springboot快速入门篇,图文并茂
Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...
- SpringBoot快速入门(实战篇一)
SpringBoot快速入门(一) 一SpringBoot简介 1.spring开发经历的阶段 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 ...
- SpringBoot快速入门01--环境搭建
SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2 选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...
- SpringBoot快速入门(一)
本文内容 SpringBoot概述 SpringBoot快速入门 SpringBoot起步依赖原理分析 SpringBoot配置 SpringBoot整合其他框架 1.SpringBoot概述 1.1 ...
- springboot快速入门(四)——数据库操作
一.Spring-Data-Jpa的引入 先给出官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ IBM ...
- springboot快速入门02--Controller编写和测试
02springboot快速入门--Controller编写和测试 1.新建一个HelloController import org.springframework.boot.SpringApplic ...
随机推荐
- Oracle常见等待事件
1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: · 当一个会话视图 ...
- 如何通过rman的增量备份恢复dataguard中standby端的数据
很多正在使用dataguard的客户,都会遇到一个棘手的问题: 在备份端与主库同步的过程中由于网络原因或磁盘问题导致一个或多个归档日志丢失,进而dataguard同步无法继续.很多客户都选择了重新全库 ...
- 转:socket
最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考. (一)架构 基于TCP协议的Socket ...
- 铁乐学python_day28_模块学习3
大部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ OS模块复习一二 >>> import os >>> os.getcwd() ...
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- SAP CX Upscale Commerce : SAP全新推出的电商云平台
大家好,我是Andy Chen,是SAP成都研究院年轻的SAP CX Upscale Commerce (后面将会以Upscale简称)开发团队的一名产品经理.CX的全称是Customer Exper ...
- 本地YUM源制作
YUM相关概念 什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管 ...
- angular 生命周期钩子 ngOnInit() 和 ngAfterViewInit() 的区别
angular 生命周期钩子的详细介绍在 https://angular.cn/guide/lifecycle-hooks 文档中做了介绍. ngOnInit() 在 Angular 第一次显示数据 ...
- using指令都用了这么多年了,其实还真没懂!
在C语言中,我们经常使用#include<stdio.h>指令来导入标准输入输出库,这确实很好理解,相当于把代码复制到当前的程序中. 但在C#语言中,当我们写Console程序时,经常在第 ...
- SDWC补题计划
2018的寒假去了SD的冬令营,因为一班二班难度悬殊,对我很不友好,几乎什么也没学会,但是我把两个班的课件都存了下来,现在慢慢把两个班的例题以及课后题都补一补(毕竟冬令营的钱不能白花). 这些题目横跨 ...