【Spring Boot实战与进阶】Controller的使用及获取请求参数的示例

简介: Controller的使用及获取请求参数的示例
Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用。这个专栏将对Spring Boot框架从浅入深,从实战到进阶,不但我们要懂得如何去使用,还要去剖析框架源码,学习其优秀的设计思想。

汇总目录链接:【Spring Boot实战与进阶】学习目录

注解 释义
@Controller 处理http请求
@RestController 返回json,相当于@Controller+@ResponseBody
@RequestMapping 配置URL映射
@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
@PostMapping 组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写
@PathVariable 获取URL中的数据
@RequestParam 获取请求参数的值

示例一:返回Json字符串或者跳转到页面

  取决于是否有@ResponseBody,示例使用的类都用注解@RestController,因此包含@ResponseBody,故返回Json字符串。

@RequestMapping(value="/demo/java")
public String java() {
    return "java";
}

在这里插入图片描述

示例二:不传参

@RequestMapping(value="/demo/json")
public Map<String, Object> json() {
    Map<String, Object> map = new HashMap<>();
    map.put("sex", "男");
    map.put("name", Arrays.asList("tom","bob","tony"));

    return map;
}

在这里插入图片描述

示例三:传参

@RequestMapping(value="/demo/getId")
public Map<String, Object> getId(Integer id) {
    Map<String, Object> map = new HashMap<>();
    map.put("id", id);
    
    return map;
}

在这里插入图片描述

示例四:参数设置

name:请求传递的字段,映射到方法参数。
required:必输设置,默认true。
defaultValue:默认值

@RequestMapping(value="/demo/login")
public Map<String, Object> login(
        @RequestParam(name = "user", required = false, defaultValue = "admin") String account,
        @RequestParam(name = "pass", required = false, defaultValue = "123456") String password) {
    Map<String, Object> map = new HashMap<>();
    map.put("account", account);
    map.put("password", password);

    return map;
}

在这里插入图片描述

示例五:传递对象

@RequestMapping(value="/demo/bean")
public Map<String, Object> bean(User user) {
    Map<String, Object> map = new HashMap<>();
    map.put("account", user.getAccount());
    map.put("password", user.getPassword());

    return map;
}

在这里插入图片描述

示例六:把参数作为URL地址的一部分

@GetMapping("/user/{id}")
public void getUser(@PathVariable int id) {
    System.out.println("查询到了id="+id);
}

发送请求:http://localhost:8080/user/1
控制台输出:

查询到了id=1

示例七:Model数据模型

  SpringMVC在内部使用了一个Model接口存储数据模型,它的功能类似java.util.Map,但是比Map容易使用。

@PostMapping("/user")
public void saveUser(User user, Model model) {
    System.out.println(model);
    System.out.println("添加用户信息 user:"+ user);
}

发送请求:http://localhost:8080/user?account=yunfan&password=123456
控制台输出:

{user=User{account='yunfan', password='123456'}, org.springframework.validation.BindingResult.user=org.springframework.validation.BeanPropertyBindingResult: 0 errors}
添加用户信息 user:User{account='yunfan', password='123456'}

示例八:Json请求

@PostMapping("/updUser")
public void updateUser(@RequestBody User user) {
    System.out.println("修改用户信息"+user);
}

发送请求:http://localhost:8080/updUser
使用post工具发送Json请求,先设置下Headers参数。
在这里插入图片描述
在这里插入图片描述
控制台输出:

修改用户信息User{account='yunfan', password='123456'}
相关文章
|
25天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
39 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
65 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
安全 Java 编译器
springboot 整合表达式计算引擎 Aviator 使用示例详解
本文详细介绍了Google Aviator 这款高性能、轻量级的 Java 表达式求值引擎
166 6
|
2月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
177 6
|
2月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
108 2
|
3月前
|
Java 测试技术 数据库
Spring事务传播机制(最全示例)
在使用Spring框架进行开发时,`service`层的方法通常带有事务。本文详细探讨了Spring事务在多个方法间的传播机制,主要包括7种传播类型:`REQUIRED`、`SUPPORTS`、`MANDATORY`、`REQUIRES_NEW`、`NOT_SUPPORTED`、`NEVER` 和 `NESTED`。通过示例代码和数据库插入测试,逐一展示了每种类型的运作方式。例如,`REQUIRED`表示如果当前存在事务则加入该事务,否则创建新事务;`SUPPORTS`表示如果当前存在事务则加入,否则以非事务方式执行;`MANDATORY`表示必须在现有事务中运行,否则抛出异常;
170 4
Spring事务传播机制(最全示例)
|
2月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
31 1
|
2月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
70 2
|
3月前
|
缓存 NoSQL Java
Springboot实战——黑马点评之秒杀优化
【9月更文挑战第27天】在黑马点评项目中,秒杀功能的优化对提升系统性能和用户体验至关重要。本文提出了多项Spring Boot项目的秒杀优化策略,包括数据库优化(如索引和分库分表)、缓存优化(如Redis缓存和缓存预热)、并发控制(如乐观锁、悲观锁和分布式锁)以及异步处理(如消息队列和异步任务执行)。这些策略能有效提高秒杀功能的性能和稳定性,为用户提供更佳体验。
180 6
|
2月前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
76 0