SpringMVC获得请求数据

30 篇文章 0 订阅
20 篇文章 0 订阅

SpringMVC可以接收如下类型的参数:

1基本数据类型

2 POJO类型参数(就是普通的JavaBean对象)

3 数组类型的参数

4 集合类型参数

服务器端获得请求参数,有时还要进行数据的封装。

一下是代码实例讲解和解析:

获得基本数据类型的参数:

Controller中的业务方法的参数名称要求与请求参数的name一致,参数值会自动映射。

例:我要获得下面的参数username,和age

在Controller中业务方法的参数就为:

首先@RequestMapping()注解肯定是要的,因为你要有地址才能访问啊。然后@ResponseBody也要,这个注解的作用就是表示不是跳转页面。然后方法的返回值为void也就代表无回写数据。然后里面的形参的名字要与请求参数的名字一样。

运行效果:

 

访问成功,在页面上没有报错,并且控制台也打印了。

如果直接访问页面不带参数就会报错。

 我们肯定会想,为什么上次的那个数据回写方法里面的形参都可以被SpringMVC自动注入。在访问的时候不带参数也可以访问。这是因为SpringMVC能进行大部分类的自动注入。但是对于基本数据类型,SpringMVC是无法自动注入的。对于大多数的类,它都可以自行注入。这时候我们怎么区分它到底是回写数据还是,请求参数呢?首先我们可以直观的知道,数据回写方法参数的是有返回值的,而请求参数是没有返回值的。

2获得POJO参数。

在Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。(意思就是一个类的属性名和请求参数一致,个数一样多,名字也是一样的)

User类:

请求参数:

运行效果:

控制台:

3 获得数组类型的参数:

在Controller中的业务方法中的形参数组名称要与请求参数的name一致。参数值会自动映射匹配

请求参数:

运行效果:

控制台:

4 获得集合类型参数

集合的话比较特殊,原始方法我们需要用将集合参数包装到一个POJO(就是封装一个类)中去 

这样的话跟前面那个获取POJO有一点相似。

首先我们先把集合包装到POJO中去

 

这个集合里面存的是user对象,user对象里面还有username,age属性。

业务方法:

 这里就有点像获取POJO参数,请求参数要和类中的属性名相同。

在这里,因为集合数据不好从get方法中获取,我们就写一个表单来进行提交

 请求参数:

运行效果:

控制台:

获取集合请求参数:

当使用ajax提交时,可以指定contextType为json形式,那么在方法参数位置使用注解@RequestBody可以直接接收集合数据而无需POJO进行包装。

所以我们这要利用ajax来提交,那么我们首先就在webapp里面创一个ajax页面,再创建一个js文件夹,导入jquery

 

先创建一个集合,然后在集合里面加入请求参数,然后再通过ajax去提交。

然后在Controller层书写代码,直接接收集合里面的东西,就不需要去写一个POJO对象了

记得要用注解@RequestBody注解把数据封装到集合到中去

启动tomcat服务器但是刚开始的时候会报错,无法加载jquery。然后我们就需要在spring-mvc的配置文件中写:

 

然后再运行。就没有错误了。(如果实在还有错,就手动刷新一下maven项目就可以了)

然后运行效果:

控制台:

 对上面的方法进行讲解:(静态资源的访问)

刚开始的时候我们找不到jquery文件的原因:

由于前端控制器会自动匹配虚拟路径把jQuery当成了像@RequestMapping那种,但是我们根本就没有jQuery的路径所以就找不到,这时候我们就要在spirngMVC文件中去创建这个资源的访问:

mapping代表映射地址,表示去哪里找。

location代表的时那个目录下的资源是对外开放的。

因为要去记路径所以感觉有点麻烦,然后我们可以写

这个是交由tomcat服务器来给你寻找静态资源。

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值