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

40 篇文章 0 订阅
6 篇文章 0 订阅

写在前面
记录自己的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]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型
Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型。内存数据模型可以是任意数据结构或对象模型,存储数据类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上执行基本的增、删、改、查操作 使用Mybatis的步骤 1、 加载数据库驱动 2、 创建并获取数据库链接 3、 创建jdbc statement对象 4、 设置sql语句 5、 设置sql语句参数(使用preparedStatement) 6、 通过statement执行sql并获取结果 7、 对sql执行结果进行解析处理 8、 释放资源(resultSet、preparedstatement、connection)Spring MVC简介 基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存有用的数据以某种技术保存起来,并且可以再次取出来应用。也就是说,可以将内存数据模型转换为存储模型,以及将存储模型转换为内存数据模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值