文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringMVC 的 12 种参数类型,你用过几种?

2024-11-28 16:05

关注

整体上看,Spring MVC可以接收的数据类型有以下 12种,下面我们将一一分析它们。

1.基本类型

Spring MVC 可以自动将请求参数绑定到控制器方法的基本数据类型上。比如 int、double、boolean 等。

示例:

@GetMapping("/add")
public String add(@RequestParam("a") int a, @RequestParam("b") Integer b) {
    int sum = a + b;
    return "Sum is: " + sum;
}

在这个例子中,add 方法接收两个请求参数 a 和 b,它们都是 int 类型。

2.包装类型

Spring MVC 可以自动将请求参数绑定到控制器方法的包装类型上。比如 Integer、Double、Boolean 等。

示例:

@GetMapping("/add")
public String add(@RequestParam("a") Integer a, @RequestParam("b") Integer b) {
    int sum = a + b;
    return "Sum is: " + sum;
}

在这个例子中,add 方法接收两个请求参数 a 和 b,它们都是 Integer 类型。

3.字符串

字符串是最常用的请求参数类型。Spring MVC 可以直接将请求参数绑定到 String 类型的参数上。

示例:

@GetMapping("/greet")
public String greet(@RequestParam("name") String name) {
    return "Hello, " + name;
}

在这个例子中,greet 方法接收一个 name 参数,并返回一个问候语。

4.自定义对象

Spring MVC 支持将请求参数绑定到自定义对象的字段上。这对于处理复杂的请求数据非常有用。

示例:

public class User {
    private String username;
    private String email;

    // Getters and setters
}

@PostMapping("/register")
public String register(User user) {
    // Use user.getUsername() and user.getEmail()
    return "User registered: " + user.getUsername();
}

在这个例子中,register 方法接收一个 User 对象,Spring MVC 会自动将请求参数 username 和 email 绑定到 User 对象的相应字段上。

5.集合和数组

Spring MVC 允许将请求参数绑定到集合类型(如 List、Set)或数组上。这在传递多个值时很有用。

示例:

@GetMapping("/numbers")
public String numbers(@RequestParam("num") List numbers) {
    int sum = numbers.stream().mapToInt(Integer::intValue).sum();
    return "Sum is: " + sum;
}

在这个例子中,numbers 方法接收一个名为 num 的请求参数列表,并计算这些数字的和。

6.路径变量

路径变量是 URL 中的一部分,可以用来传递参数。Spring MVC 可以通过 @PathVariable 注解将路径变量绑定到方法参数上。

示例:

@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long userId) {
    return "User ID: " + userId;
}

在这个例子中,getUser 方法接收一个路径变量 id,并将其绑定到 userId 参数上。

7.请求头

请求头包含了客户端请求的一些元数据信息。Spring MVC 可以通过 @RequestHeader 注解将请求头信息绑定到方法参数上。

示例:

@GetMapping("/check")
public String check(@RequestHeader("User-Agent") String userAgent) {
    return "User-Agent: " + userAgent;
}

在这个例子中,check 方法接收 User-Agent 请求头的值。

8.Cookie值

Spring MVC 可以通过 @CookieValue 注解来获取 cookie 的值。

示例:

@GetMapping("/cookie")
public String cookie(@CookieValue(value = "sessionId", defaultValue = "defaultSessionId") String sessionId) {
    return "Session ID: " + sessionId;
}

在这个例子中,cookie 方法接收名为 sessionId 的 cookie 值。

9.请求体

对于 POST、PUT 等请求方法,Spring MVC 可以通过 @RequestBody 注解将请求体绑定到方法参数上。通常用于接收 JSON、XML 等格式的数据。

示例:

@PostMapping("/json")
public String json(@RequestBody User user) {
    return "Received user: " + user.getUsername();
}

在这个例子中,json 方法接收 JSON 格式的请求体并将其转换为 User 对象。

10.Model 和 ModelMap

通过 Model 或 ModelMap 参数,开发人员可以向视图传递数据。

示例:

@GetMapping("/model")
public String model(Model model) {
    model.addAttribute("message", "Hello, World!");
    return "viewName";
}

在这个例子中,model 方法向视图传递了一个名为 message 的属性。

11.Session 和 Servlet API

Spring MVC 也允许直接访问 HTTP 会话和 Servlet API。例如,可以通过 HttpSession 或 HttpServletRequest 参数访问会话和请求信息。

示例:

@GetMapping("/session")
public String session(HttpSession session) {
    session.setAttribute("attributeName", "attributeValue");
    return "Session attribute set.";
}

在这个例子中,session 方法直接访问 HTTP 会话并设置一个会话属性。

12.注解组合

Spring MVC 提供了一种强大的功能,允许开发人员创建自定义注解来组合现有的注解,从而简化代码和提高可读性。

示例:

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestParam
public @interface MyRequestParam {
    String value() default "";
}

@GetMapping("/custom")
public String custom(@MyRequestParam("param") String param) {
    return "Custom param: " + param;
}

在这个例子中,我们定义了一个自定义注解 @MyRequestParam,并在 custom 方法中使用。

总结

本文,我们详细地介绍了 Spring MVC可以接收的12种参数类型,了解和掌握它们的差异和适用场景,可以帮助我们选择最合适的方式来处理请求数据,从而更加熟练的使用 Spring MVC。

来源:猿java内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯