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)添加方法

相关推荐
gentle_ice32 分钟前
leetcode——二叉树的中序遍历(java)
java·数据结构·算法·leetcode
苹果酱05671 小时前
mysql.sock.lock 导致mysql重启失败
java·spring boot·毕业设计·layui·课程设计
吃一口大米饭1 小时前
合并两个有序链表(leetcode刷题)
java·数据结构·算法·leetcode·链表
简 洁 冬冬1 小时前
Java中的Servlet
java·开发语言·servlet
fly spider1 小时前
多线程-线程池的使用
java·面试·线程池·多线程·juc
组合缺一2 小时前
Solon Cloud Gateway 开发:导引
java·gateway·reactor·solon·响应式
陈平安Java and C3 小时前
二叉树介绍
java
S-X-S3 小时前
sunrays-framework配置重构
java·重构
gentle coder3 小时前
JVM_类的加载、链接、初始化、卸载、主动使用、被动使用
java·jvm
釉色清风4 小时前
【数据结构】动态内存管理函数
java·c语言·javascript·数据结构·c