SpringMVC两种接收GET参数的方法

简介:

接收Date类型数据

当客户端发起这样的请求时,服务端如何接收其中的日期参数settleDate呢:

http://localhost:8080/calculate/1?settleDate=2016-10-30

 

以前我们基本上是用一个字符串来接收这个参数,然后在代码中手动将其转换为Date类型。如:

1
2
3
4
5
6
7
8
9
public  void  test( @PathViriable  lendId,  @RequestParam  String settleDate){
     Date actualSettleDate;
     if (settleDate == null ){
         actualSettleDate =  new  Date();
     } else {
         actualSettleDate = DateUtils.parseDate(settleDate, "yyyy-MM-dd" );
     }
     ......
}

然而SpringMVC提供了一个更简便的方法: 

1
2
3
4
5
6
7
public  void  test( @PathViriable  lendId, @RequestParam (required =  false @DateTimeFormat (iso = DateTimeFormat.ISO.DATE) Date settleDate){
     if (settleDate ==  null ){
  
         settleDate =  new  Date();
     }
     ......
}

其中的iso属性预定义了yyyy-MM-dd、HH:mm:ss.SSSZ、yyyy-MM-dd'T'HH:mm:ss.SSSZ这三种格式。如果需要别的格式,可以用其中的pattern属性来自定义。

不过,如果要通过SpringMVC的注解来给日期参数设定默认值(比如设值为当前日期),需要自己进行扩展。


 

用一个复杂对象接收多个参数

当客户端发起这样的请求时,服务端如何接收其中的全部参数呢:

http://localhost:8080/calculate/product/97?currentPhase=1&overdueDays=1,16&channelType=UCREDIT&fundSource=RENRENDAI&monthlyRepay=1000&originPrincipal=900000

 

常用的做法,是在Controller的对应方法上,把所有参数一一列出来:

1
2
3
public  void  calcluate( @PathViriable  productId,  @RequestParam  int  currentPhase,  @RequestParam  Integer[] overdueDays,  @RequestParam  ChannelType channelType,  @RequestParam  FundSource fundSource,  @RequestParam  BigDecimal monthlyRepay,  @RequestParam  BigDecimal originPrincipal){
     ......
}


或者用一个Map<String, String>,来接收全部参数,然后手动将其转化为对应的格式:

1
2
3
public  void  calcluate( @PathViriable  productId,  @RequestParam (required =  false ) Map<String, String> param){
     ......
}

其实还有第三种方式,即定义一个数据封装类,用这个类来接收参数:

1
2
3
public  void  calcluate( @PathViriable  productId, RestParam param){
     ......
}

其中的数据封装类如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  class  RestParam  extends  NonIDBaseModel {
     /**
      *
      */
     private  static  final  long  serialVersionUID = 3550863010097047054L;
  
     private  int  currentPhase;
  
     private  List<Integer> overdueDays =  new  ArrayList<>();
 
     private  ChannelType channelType;
    
     private  FundSource fundSource;
     
     private  BigDecimal monthlyRepay;
   
     private  BigDecimal originPrincipal;
  
     // getters/setters
}

需要注意的是,controller的方法上,对 RestParam param不要再加@RequestParam注解。




本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/1879714,如需转载请自行联系原作者

相关文章
|
19天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
31 4
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
142 2
|
2月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
41 1
|
2月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
37 1
|
3月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
4月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
2月前
|
前端开发 Java Spring
Spring MVC源码分析之DispatcherServlet#getHandlerAdapter方法
`DispatcherServlet`的 `getHandlerAdapter`方法是Spring MVC处理请求的核心部分之一。它通过遍历预定义的 `HandlerAdapter`列表,找到适用于当前处理器的适配器,并调用适配器执行具体的处理逻辑。理解这个方法有助于深入了解Spring MVC的工作机制和扩展点。
35 0
|
3月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
66 2
|
3月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
230 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
4月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向