springboot快速入门(三)——Controller的使用

Easter79
• 阅读 568

一、概述

  controller的分类:

  springboot快速入门(三)——Controller的使用

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

二、Controller使用

  1.使用@controller注解 

@Controller
public class HelloController {

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

  直接使用会报一个错:

  springboot快速入门(三)——Controller的使用

  原因是缺少了模板的渲染,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:

  springboot快速入门(三)——Controller的使用

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

@Controller
public class HelloController {

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

  重新访问:

  springboot快速入门(三)——Controller的使用

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

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

3.@RestController的使用

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

@RestController
public class HelloController {

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

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

    springboot快速入门(三)——Controller的使用

     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";
    }
}

  springboot快速入门(三)——Controller的使用

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

springboot快速入门(三)——Controller的使用

    request的访问方式:

   springboot快速入门(三)——Controller的使用

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

三、请求参数的使用

  基本上和springMVC是一致的:

  springboot快速入门(三)——Controller的使用

  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插件已经放弃更新了,使用插件形式可以在桌面创建它的快捷方式启动,当然也可以下载独立软件)

springboot快速入门(三)——Controller的使用

  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;
    }
}

  springboot快速入门(三)——Controller的使用

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

@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;
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
6个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Feign请求响应结果被截取com.fasterxml.jackson.core.io.JsonEOFException
在生产环境使用feign调用外部接口时,偶尔会出现下面错误2020101511:00:18,535ERRORcom.shein.abc.rmp.controller.RecExplainConfigControllerrec_explain_query.failffeign.codec.DecodeExc
Stella981 Stella981
3年前
Spring Boot 406(type=Not Acceptable, status=406)异常解决办法
使用SpringBoot,Controller请求返回的参数类型是ResponseBody,如果请求的时候使用使用配置的默认请求扩展名,例如.html,SpringMVC会抛出一个typeNotAcceptable,status406错误,如下:WhitelabelErrorPageThisapplica
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
OFBiz 快速入门——续二
OFBiz快速入门——续二2011年03月17日星期四00:03OFBiz 快速入门2.5 创建一个文件,取名为(controller.xml),被OFBiz webapp控制器使用的。在没有额外增加功能时,这个文件内容非常的小与简单,如下:<?xml version"1.0" encoding"UTF8"?<siteco
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
6
获赞
1.2k