【前端学java】SpringBootWeb极速入门-请求参数解析(02)

简介: 【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)

这一章节,我们将使用spring boot实现常见的请求参数处理。

首先,我们需要创建一个spring boot web项目,项目创建请参考往前文章。

简单参数

简单参数通常是指基本数据类型(如String、int、double等)的值,如get请求中的query参数。

我们实现一个简单的get请求:http://localhost:8080/simpleParam?name=张三&age=18 ,这个接口返回值为“hello get 请求!”

原始方式

在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。(了解即可)
代码如下:

package com.shixiaoshi.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class RequestController {
   
   
    // 原始方式
    @RequestMapping("/simpleParam")
    public  String simpleParam(HttpServletRequest request){
   
   
        // 获取请求参数
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");
        int age = Integer.parseInt(ageStr);

        System.out.println("name:"+name + "age:" + age);

        return "hello get 请求!";
    }
}

上述代码是一个控制器类,用于处理HTTP请求,使用了java的注解写法。

  • @RestController:这个注解标记类为一个REST控制器。当一个类被注解为@RestController时,Spring会为该类自动配置一个requestMapping的处理器。
  • @RequestMapping("/simpleParam"):这个注解映射HTTP请求到simpleParam方法。/simpleParam是一个URL路径,当用户发送GET请求到该路径时,该方法会被调用。

我们在postman中请求这个接口测试一下:
GIF 2023-11-10 14-06-33.gif
这种方式非常繁琐,还要手动进行类型转换,所以不建议。

Spring Boot方式

这种方式参数名与形参名相同,定义形参即可接受参数

package com.shixiaoshi.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
   
   
    // 原始方式
    @RequestMapping("/simpleParam")
    // 基于spring boot方式
    public String simpleParam(String name,Integer age){
   
   
        System.out.println("name:"+name + "age:" + age);
        return "请求完成!";
    }
}

GIF 2023-11-10 14-15-47.gif
对于简单参数,get请求和post请求的代码是一样的
GIF 2023-11-10 14-21-20.gif
如图,我们将get请求改为了post,程序一样是可以正常打印的。

形参名称更改

使用spring boot的形式,请求参数名和方法的形参名称必须相同
image.png
如果想更改形参名称,可以使用@RequestParam完成映射

@RestController
public class RequestController {
   
   
    // 原始方式
    @RequestMapping("/simpleParam")
    // 基于spring boot方式
    public String simpleParam(@RequestParam(name = "name") String userName, Integer age){
   
   
        System.out.println("name:"+userName+ "age:" + age);
        return "请求完成!";
    }
}

GIF 2023-11-10 14-29-26.gif
@RequestParam 是Spring MVC框架中的一个注解,用于将HTTP请求参数绑定到方法的参数上。它通常用于处理GET和POST请求。
其语法如下

@RequestParam(name = "name",required = true)

required是其第二个参数,默认值为required = true,意味着,接口请求时必须传name属性,否则报错
GIF 2023-11-10 14-35-29.gif
如图,我们删除name参数,请求就会报错。

实体参数

简单实体参数

请求参数名与形参对象属性名相同,定义POJO接受接口。

POJO是指一个普通的Java对象,通常用于表示实体对象数据模型。POJO通常包含一组属性和相应的getter和setter方法,用于访问和修改这些属性的值。

我们依旧以 http://localhost:8080/simpleParam?name=张三&age=18 为例
定义一个User类及需要解析的參數
image.png
引入即可
image.png

JSON参数

日常开发中,JSON参数是最常见的一种POST请求形式之一。我们来实现如下接口:
GIF 2023-11-14 10-01-41.gif
我们使用 @RequestBody注解来声明请求类型,使用一个实体类User来接收body请求体。image.png
User实体类

package com.shixiaoshi.pojo;

public class User {
   
   
    private String name;
    private Integer age;

    private Address address;

    public String getName() {
   
   
        return name;
    }

    public void setName(String name) {
   
   
        this.name = name;
    }

    public Integer getAge() {
   
   
        return age;
    }

    public void setAge(Integer age) {
   
   
        this.age = age;
    }

    public Address getAddress() {
   
   
        return address;
    }

    public void setAddress(Address address) {
   
   
        this.address = address;
    }

    @Override
    public String toString() {
   
   
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }
}

在这个类中,我们通过将数据成员(name、age和address)定义为私有(private),并只提供公共的getter和setter方法,使得User类的内部状态对外部是不可见的。这是一种封装性的体现,有助于保护数据不被外部随意修改。toString的重写,便于在RequestController类中打印该类时,输出更有意义的内容。
Address实体类

package com.shixiaoshi.pojo;

public class Address {
   
   
    private String province;
    private String city;

    public String getProvince() {
   
   
        return province;
    }

    public void setProvince(String province) {
   
   
        this.province = province;
    }

    public String getCity() {
   
   
        return city;
    }

    public void setCity(String city) {
   
   
        this.city = city;
    }

    @Override
    public String toString() {
   
   
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}
相关文章
|
7天前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
124 0
|
2月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
258 3
|
24天前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
273 4
|
2月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
219 2
|
2月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
2月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
15天前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
248 0
|
24天前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
202 0
|
2月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
182 1
|
2月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
113 0

推荐镜像

更多
  • DNS