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服务器来给你寻找静态资源。