springmvc处理客户端请求(普通参数等五种简单类型)

一、客户端请求路径冲突问题 

 问题代码演示如下所示:

ServletContainersInitConfig类:

 springmvcConfig:

 值得思考的是:当该表现层下的两个对象中,访问资源路径一样的时候,那么就会发生路径冲突,也就是说:客户端请求过来的save资源路径,springmvc控制器不知道到底访问哪个对象下的save路径下的资源了:

BookController:

UserController:

 冲突结果演示如下:

 1.1、因此我们该如何解决客户端请求访问路径(如访问路径save)冲突问题呢:

解决方法:就是在各自的对象访问资源路径下加上对象名

 

 因此再访问的时候,因为该两个对象中访问资源的路径已经不同了(都不是save了),所以就不会发生冲突现象了:

 1.2、还有一个小问题就是:当一个对象当中访问资源路径下的方法过多的时候,那么都要在对象访问资源路径下加对象名是麻烦的

 

 

二、客户端get请求与post请求发送普通参数

2.1、get请求传参

当服务端的资源路径下的方法中参数和客户端url地址参数名不一样的时候,虽然不会报错,但是服务端是拿不到客户端请求的资源数据的 ,也就是说服务端拿到的客户端的请求数据为null

 2.2、post请求传参

 2.3、请求参数中文乱码问题

也就是说:客户端请求资源数据的时候,是以中文的形式来进行请求资源数据的,但是中文是会乱码的

演示操作如下所示:

 

 结果如下所示:(会发现请求参数为中文的时候就会出现乱码情况了

 2.3.1、那么如何解决请求中文乱码问题呢:

在web容器中加入处理中文乱码方法

注意:该处理中文乱码问题只适用于客户端以post请求方式,get请求方式该处理方法解决不了请求中文乱码问题

三、5种客户端请求服务端传递的请求参数

3.1、普通参数 

 当url地址参数名和方法中的形参变量名不同的时候,如果还想拿到客户端请求的资源数据,那么就需要我们用到@RequestParam("#")注解

演示如下所示:

 

 

3.2、POJO类型参数

注意:如果这个POJO参数有 @RequestBody:JSON数据格式的注解的话,那么就是说这个User user参数只能接收前端传递的JSON格式的数据 (因此我们要先看是不是接收的是JSON数据格式的数据)

 POJO:User类:

 客户端访问/pojoParam路径下的资源:

也就是说:如果服务端参数用POJO形式,那么该POJO类当中的属性名就是突破点,也就是说客户端只要访问服务端路径资源的时候,url地址参数名和POJO类当中的属性名一样的时候,那么POJO实体类就会把客户端请求的数据(kitty,20)封装到POJO实体类的属性当中,供服务端获取客户端请求的数据 (必须保证客户端请求url地址参数名【如下面画框的】和POJO实体类当中的属性名一致,那么才能把客户端请求的数据封装到POJO实体类属性当中,然后服务端就能够在POJO实体类属性当中获取到客户端的请求数据了

 结果如下所示:

如果客户端url地址参数名有和服务端实体类当中的属性名不一样的,那么服务端就会拿到null

演示如下所示:

 因此服务端获取的结果:

3.3、嵌套POJO类型参数(也就是3.2里面的套娃)

 POJO:User实体类:

 Address实体类:

 客户端访问服务端"/pojoContainPojoParam"路径资源下的数据:

同理,和上面单独User实体类一样,客户端访问服务端"/pojoContainPojoParam"路径资源下的数据的时候,可以把客户端请求的数据封装到服务端User实体类的属性当中(只不过这次的User实体类属性当中有一个引用型属性) 【注意:一定保证客户端请求url地址参数名和POJO实体类(User实体类)当中的属性名一致,那么才能把客户端请求的数据封装到POJO实体类属性当中,然后服务端就能够在POJO实体类属性当中获取到客户端的请求数据了

代码演示如下所示:

 

3.4、数组类型参数

 客户端访问服务端"/arrayParam"路径下的资源:

 

3.5、集合类型参数

和3.4中的数组类型参数操作方法是一样的,只不过要加上@RequestParam注解,要不然就报错了

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值