当前位置: 首页 > article >正文

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


http://www.kler.cn/a/521873.html

相关文章:

  • decison tree 决策树
  • Microsoft Visual Studio 2022 主题修改(补充)
  • 使用 Redis List 和 Pub/Sub 实现简单的消息队列
  • 一个简单的自适应html5导航模板
  • 【学习笔记】计算机网络(二)
  • DPO、KTO、DiffusionDPO
  • c语言中mysql_query的概念和使用案例
  • Niagara学习笔记
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)
  • 【linux】Linux 常见目录特性、权限和功能
  • LockSupport概述、阻塞方法park、唤醒方法unpark(thread)、解决的痛点、带来的面试题
  • Firewalld 防火墙
  • Python的那些事第三篇:Python编程的“调味料”与“交流术”运算符与输入输出
  • 读书笔记--分布式服务架构对比及优势
  • 基于SpringBoot的志愿者招募管理系统
  • 目标跟踪之sort算法(3)
  • [免费]基于Python的Django博客系统【论文+源码+SQL脚本】
  • Python3 【函数】项目实战:5 个新颖的学习案例
  • 从0到1:.NET Core微服务的Docker容器奇幻冒险
  • springboot 动态线程池
  • 省级金融发展水平数据(2000-2022年)-社科数据
  • git困扰的问题
  • C++标准线程库实现优雅退出的方式
  • three.js+WebGL踩坑经验合集(5.2):THREE.Mesh和THREE.Line2在镜像处理上的区别
  • AndroidCompose Navigation导航精通2-过渡动画与路由切换
  • Python GUI 开发 | PySide6 辅助工具简介