Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)

简介: Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。

Spring MVC是一个强大的模块,它提供了一种声明式的方式来接收HTTP请求中的参数。这些参数可以是查询字符串参数、表单数据或是路径中的参数。Spring MVC 提供了多种方式来处理这些参数,让开发人员可以根据不同的需求选择最合适的方法。以下是Spring MVC接收参数的几种典型方式:

1. 直接接收参数

最简单的接收参数的方式就是直接在控制器方法的参数中声明它。Spring MVC会自动根据参数名从请求中提取相应的值并注入到方法中。

@RequestMapping("/greeting")
public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
    model.addAttribute("name", name);
    return "greeting";
}

上面的例子展示了如何通过 @RequestParam注解从查询参数中获取 name值,如果没有提供 name参数,则默认使用"World"。

2. 注解接收参数

@PathVariable@RequestBody是处理REST风格URL和请求体数据的两个常用注解。

  • @PathVariable 示例:
@RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
public String getUserById(@PathVariable("userId") String userId, Model model) {
    model.addAttribute("userId", userId);
    return "user";
}

这个例子展示了如何从URL路径中提取参数。

  • @RequestBody 示例:
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String addUser(@RequestBody User user, BindingResult result, Model model) {
    model.addAttribute("user", user);
    return "user";
}

这里展示了如何接收JSON或XML格式的请求体并自动将其反序列化为Java对象。

3. 集合接收参数

Spring MVC允许直接将参数映射到Java集合类型,比如List和Map。

  • 接收到 List 示例:
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String listUsers(@RequestParam List<String> userIds, Model model) {
    model.addAttribute("userIds", userIds);
    return "users";
}
  • 接收到 Map 示例:
@RequestMapping(value = "/user/info", method = RequestMethod.GET)
public String userInfo(@RequestParam Map<String, String> userInfo, Model model) {
    model.addAttribute("userInfo", userInfo);
    return "userInfo";
}

4. 实体接收参数

实体接收参数利用了Spring的数据绑定功能,可以直接将请求参数绑定到一个Java Bean上,非常适合处理表单提交的场景。

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String registerUser(User user, Model model) {
    model.addAttribute("user", user);
    return "userProfile";
}

在这个例子中,Spring MVC 可以根据请求参数名称和 User实体的属性名自动匹配和填充数据。

结论

Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。

目录
相关文章
|
5月前
|
前端开发 Java 数据库连接
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
|
9月前
|
JSON 前端开发 Java
Spring MVC常用的注解
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中 的所有响应请求的方法都是以该地址作为父路径。 @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。 @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。 @Controller:控制器的注解,表示是表现层,不能用用别的注解代替 @RestController : 组合注解 @Conntroller + @ResponseBody @GetMapping , @PostMapping , @Put
|
10月前
|
消息中间件 Java Kafka
【Azure Kafka】使用Spring Cloud Stream Binder Kafka 发送并接收 Event Hub 消息及解决并发报错
reactor.core.publisher.Sinks$EmissionException: Spec. Rule 1.3 - onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled serially.
176 5
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
613 4
|
JSON 前端开发 Java
Spring MVC——获取参数和响应
本文介绍了如何在Spring框架中通过不同的注解和方法获取URL参数、上传文件、处理cookie和session、以及响应不同类型的数据。具体内容包括使用`@PathVariable`获取URL中的参数,使用`MultipartFile`上传文件,通过`HttpServletRequest`和`@CookieValue`获取cookie,通过`HttpSession`和`@SessionAttribute`获取session,以及如何返回静态页面、HTML代码片段、JSON数据,并设置HTTP状态码和响应头。
240 1
Spring MVC——获取参数和响应
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
1242 2
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
351 2
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
874 0
|
前端开发 Java Spring
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
380 2
|
Java Spring
spring boot 启动项目参数的设定
spring boot 启动项目参数的设定
316 0