SpringMVC的参数处理
一、参数接收
1.使用servlet API接收参数
在方法参数中添加HttpServletRequest类型的参数,然后就可以像servlet的方法一样来接收参数
2.在方法中定义同名参数
如果url地址中的参数名与方法的参数名不一致时,可以使用RequestParam注解进行重新关联
url地址中的参数名p,而方法中的参数名是password,这时我们可以使用RequestParam注解对参数进行重新关联
当我们在方法中接收一个整数类型的参数时,如果url中没有传递该参数则会抛异常。如果这个参数不是必须要传递的,我们可以给该参数设置默认值
设置完默认值后,如果url中没有携带id参数,则该参数默认值为0,不会抛出异常
3.使用POJO类接收参数
什么是POJO?
“Plain Old Java Object”“简单java对象”。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象
spring会自动的从请求中把参数名与User类中属性名相同的数据,进行赋值
4.使用PathVariable接收参数
使用PathVariable进行参数传递,首先要在地址中添加占位符,然后使用PathVariable跟方法入参进行绑定
二、返回数据的方式
1.使用servlet API传递数据:
首先需要在方法中增加HttpServletRequest类型的参数,然后使用request对象传递数据,使用方式与之前学习servlet时的用法一致
2.使用Map传递数据:
首先需要在方法中增加java.util.Map类型的参数,然后使用map对象通过put方法,把数据写入到map中,进行数据传递
3.使用Model传递数据:
首先需要在方法中增加Model类型的参数,然后使用model对象通过addAttribute方法,把数据写入到addAttribute对象中,进行数据传递
4.使用ModelAndView传递数据:
首先在方法中创建ModelAndView对象,使用addObject方法传递数据,使用setViewName设置要跳转的页面,注意方法的返回值也是ModelAndView类型
以上四种返回数据的方式都可以使用,效率上也几乎无差别
三、文件上传
SpringMVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResovler
SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作,如果想使用Spring的文件上传功能,需现成上下文中配置MultipartResolver
1.配置CommonsMultipartResolver
首先配置编码,必须跟jsp文件中的编码保持一致
maxUploadSize用来配置最大支持的文件大小,默认时不限制,单位是byte
2.导入上传文件需要的jar包
3.编写上传的jsp页面
注意enctype属性,如果不加是无法上传文件的
4.编写用于上传的controller方法
注意参数类型,一定要用RequestParam注解标注,否则报错
四、JSON数据格式
1.什么是JSON数据格式?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易与人阅读和编写,同时也易于机器解析和生成
2.JSON建构与两种结构:
(1)“名称/值”对的集合(A collection of name/value pairs)。相当于Java中的Map
(2)值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)
3.JSON数据格式
这就是一段最简单的JSON格式的数据
4.SpringMVC返回JSON
(1)配置jar包
(2)配置文件中的添加<mvc:annotation-driven/>标签
(3)添加方法