IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> SSM之SpringMVC中数据请求/SpringMVC中请求参数类型有哪些?SpringMVC中自定义转换器怎么写?Restful风格又是啥? -> 正文阅读

[JavaScript知识库]SSM之SpringMVC中数据请求/SpringMVC中请求参数类型有哪些?SpringMVC中自定义转换器怎么写?Restful风格又是啥?

写在前面
记录自己的SpringMVC学习之旅,若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

2.4 数据请求

2.4.1 获得请求参数

客户端请求参数格式为:name = value & namae =value……
服务器端要获得请求参数,有时还需要进行数据的封装,SpringMVC可以接收如下数据类型参数:

  • 基本数据类型参数
  • POJO类型参数
  • 数组类型参数
  • 集合类型参数

2.4.2 获得基本数据类型参数

Controller中的业务方法的参数名称要与请求参数的名称一样,参数值会自动进行映射匹配。
前台请求参数方式为:
http://localhost:8080/datarequest1?userName=tom&age=20
一般后台controller中业务方法用对应的参数名称即可,如图![[Pasted image 20211128220437.png]]

2.4.3 获得POJO类型参数

Controller中的方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配!
一般请求url为:
http://localhost:8080/datarequest2?userName=tom&age=30
而controller业务方法参数改为对应的对象即可。

2.4.4 获得数组型参数

Controller中的方法数组名称与请求参数的name一致,参数值会自动映射匹配!
一般请求url为:
http://localhost:8080/datarequest3?str=11&str=22str=33&str=44
而controller业务方法参数改为数组即可,如图![[Pasted image 20211130202301.png]]

2.4.5 获取集合类型参数

2.4.5.1 POJO对象

获得集合参数时要将集合参数包装到一个POJO对象中,一般是VO命名。如图![[Pasted image 20211130203351.png]]
然后就跟获得POJO 类型参数一样操作了。

2.4.5.2 Ajax方式

当使用ajax提交时,可以指定contenType为JSON格式,那么在方法参数位置使用@RequestBody可以直接收集集合数据而不用POJO对象进行封装。

2.4.6 代码操作

2.4.6.1 项目准备

根据[### 2.1.4 项目搭建]步骤搭建好项目并补全缺失目录,然后新建User实体类!

2.4.6.2 获取基本数据类型

在controller类中书写业务方法,如下:

// 将前台传来的数据进行打印输出  
 @RequestMapping(value = "/datarequest1")  
    @ResponseBody  
// 不进行页面跳转,也不需要数据回写,仅仅是数据展示  
 public void dataRequest(String userName,int age)  
    {  
        System.out.println(userName);  
 		System.out.println(age);  
 	}

运行项目后,如图操作![[Pasted image 20211128215559.png]]
进行参数传递,回车后可在控制台看到前台的数据请求,如图
![[Pasted image 20211128220250.png]]

2.4.6.3 获取POJO类型参数

新建User类对象,并进行封装,如图![[Pasted image 20211130200456.png]]
业务方法如下:

    // 将前台传来的POJO数据进行打印输出  
 @RequestMapping(value = "/datarequest2")  
    @ResponseBody  
// 不进行页面跳转,也不需要数据回写,仅仅是数据展示  
 public void dataRequest2(User user)  
    {  
        System.out.println(user);  
 }

同上操作后可看到控制台输出对应的信息,如图![[Pasted image 20211130200738.png]]

2.4.6.4 获取数组类型参数

业务方法:

    // 将前台传来的数组数据进行打印输出  
 @RequestMapping(value = "/datarequest3")  
    @ResponseBody  
// 不进行页面跳转,也不需要数据回写,仅仅是数据展示  
 public void dataRequest2(String [] str)  
    {  
        System.out.println(Arrays.asList(str));  
 }

同相应操作后可看到控制台输出对应的信息,如图![[Pasted image 20211130202201.png]]

2.4.6.5 获取集合类型参数

2.4.6.5.1 用POJO对象

新建VO类作为集合 的POJO对象
业务方法为:

    // 将前台传来的集合数据进行打印输出  
 @RequestMapping(value = "/datarequest4")  
    @ResponseBody  
// 不进行页面跳转,也不需要数据回写,仅仅是数据展示  
 public void dataRequest4(VO vo)  
    {  
        System.out.println(vo);  
 }

由于是集合对象,不好 像之前一样直接操作,所以用post提交表单形式来操作。新建demo.jsp,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
<html>  
<head>  
 <title>Title</title>  
</head>  
	<body>  
	<form action="/datarequest4" method="post">  
		 <input type="text" name="userList[0].userName"/><br>  
		 <input type="text" name = "userList[0].age"/><br>  
		 <input type="text" name="userList[1].userName"/><br>  
		 <input type="text" name = "userList[1].age"/><br>  
		 <input type="submit" value="提交">  
	</form>  
</body>  
</html>

进行操作后可在控制台看到输出,如图![[Pasted image 20211130205303.png]]

2.4.6.5.2 用JSON

开启静态资源访问权限,在spring-mvc.xml中进行配置,如下:

<!-- 静态资源访问权限开启-->  
 <mvc:default-servlet-handler/>  
<!--    <mvc:resources mapping="/js/**" location="/js/"/>-->

新建jsp文件,用ajax构建数据,如下:

<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.4.1.min.js"></script>  
<script>  
 var userList = new Array();  
 userList.push({userName:"tom",age:32});  
 userList.push({userName:"jerry",age:22});  
 $.ajax({  
        type:'post',  
 url:"${pageContext.request.contextPath}/datarequest5",  
 data:JSON.stringify(userList),  
 contentType:"applicatoin/json;charset=UTF-8"  
 });  
</script>

业务方法如下:

    // 将前台传来的集合数据进行打印输出 JSON格式  
 @RequestMapping(value = "/datarequest5")  
    @ResponseBody  
// 不进行页面跳转,也不需要数据回写,仅仅是数据展示  
 public void dataRequest5(@RequestBody List<User> userList)  
    {  
        System.out.println(userList);  
 }

2.4.7 参数绑定注解@RequestParam

2.4.7.1 @RequestParam介绍

当请求的参数名称与Controller的业务方法参数名称不一样时,可用@RequestParam注解显示地绑定。
一般有三个参数,如下:

  • value.即要绑定的参数名称
  • required.是布尔类型参数,true为默认,为必须要绑定,没有此参数会报错
  • defaultValue.参数默认值,没有任何参数绑定时使用

2.4.7.2 代码操作

表单页面如下:

<form action="${pageContext.request.contextPath}/datarequest6" method = "post">
<input type="text" name="name"><br/>
 <input type="submit" name="提交"><br/>
 </form>

Controller类方法如下:

@RequestMapping("/datarequest6")
@ResponseBody
public void dataRequest6(@RequestParam(value = "name",required = false,defaultValue="demo") String userName)
{
System.out.println(userName);
}

同样如图操作后
![[Pasted image 20211201143445.png]]
可在控制台看到结果
![[Pasted image 20211201143458.png]]

2.4.8 获取Restful类型风格参数

2.4.8.1 Restful类型介绍

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于
客户端和服务器端交互类的软件,基于这个风格设计的软件可以更简洁、更有层次,更易于实现缓存机制。

2.4.8.2 要求

风格要求:URL+请求方式
HTTP协议里四个表示操作方式的动词如下:

  • GET,用于获取资源
  • POST,用于新建资源
  • PUT,用于更新资源
  • DELETE,用于删除资源
    比如:
  • /user/1 GET: 得到id = 1 的User
  • /user/1 DELETE: 删除id = 1 的User
  • /user/1 PUT: 更新id = 1 的User
  • /user/1 POST:新增User

2.4.8.3 使用

SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成/user/{id},占位符{id}对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

2.4.8.4 代码实现

controller类中业务方法如下:

//    Restfule类型风格参数  
@RequestMapping("/datarequest7/{name}")  
   @ResponseBody  
public void dataRequest7(@PathVariable(value = "name",required = true) String userName)  
   {  
       System.out.println(userName);  
}

在浏览器页面做如图操作![[Pasted image 20211201151922.png]]
后可在控制台看到对应的结果

![[Pasted image 20211201151940.png]]

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:57:17  更:2021-12-03 12:58:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:51:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码