[Spring MVC学习03]参数绑定

news/2024/11/25 22:58:25/

  • 前言
  • 1.基本数据类型(涉及乱码问题)
  • 2.包装类型
  • 3.通过@RequestParam获取参数
  • 4.字符串类型
  • 5.数组类型
  • 6.JavaBean类型
  • 7.List类型

前言

Spring MVC支持对多种类型的请求参数进行封装

  • 基本类型
  • 包装类型
  • JavaBean
  • 数组类型
  • 字符串类型
  • 集合类型

因为主要是为了学习参数绑定的内容,所以有的方法,我就没有返回视图,大家不用在意浏览器的页面报404,关键是传参问题
在这里插入图片描述

1.基本数据类型(涉及乱码问题)

设计表单页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><form action="/springmvc01/param" method="post">用户名:<input type="text" name="username"><br>年龄:<input type="text" name="age"><br><input type="submit" value="提交"></form></body>
</html>

success.jsp(路径webapp/jsp/success.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>传参成功
</body>
</html>

编写控制器接收参数

@Controller
public class ParamController {@RequestMapping("/param")public String save(String username,Integer age){System.out.println("用户名:"+username);System.out.println("年龄:"+age);return "success";}
}

这里要注意的是,控制器接收参数的形参名称必须和表单的name属性保持一致,否则会接收失败!
Spring MVC.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 开启扫描器--><context:component-scan base-package="com.zyh.controller"></context:component-scan><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--给逻辑视图加上前缀和后缀 --><!--前缀--><property name="prefix" value="/jsp/"></property><!--后缀--><property name="suffix" value=".jsp"></property></bean><!--开启注解驱动--><mvc:annotation-driven></mvc:annotation-driven>
</beans>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们发现出现了乱码问题,这时我们可以配置Spring MVC提供字符编码过滤器来解决问题。

  <!--字符编码过滤器--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><!--指定转换的编码--><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

在这里插入图片描述

2.包装类型

 @RequestMapping("/packageType")public void packageType(Integer id){System.out.println("id:"+id);}

在这里插入图片描述
在这里插入图片描述

3.通过@RequestParam获取参数

如果我们的前端参数名称和后端方法参数名称不一致,就无法获取到对应的参数值,为了解决前后端参数名称不一致的问题,SpringMVC框架提供了【@RequestParam】注解,解决参数名称不一致的问题。
在这里插入图片描述

4.字符串类型

在这里插入图片描述
String类型的参数,如果我们没有传参的话,默认是null
在这里插入图片描述

5.数组类型

在这里插入图片描述

6.JavaBean类型

准备一个实体类

public class User {private Integer id;private String username;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +'}';}
}

7.List类型

集合类型的数据要使用JavaBean进行封装

public class User {private Integer id;private String username;private String password;private List<Integer> ids;public List<Integer> getIds() {return ids;}public void setIds(List<Integer> ids) {this.ids = ids;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", ids=" + ids +'}';}
}

list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><form action="/data" method="post">ids0:<input type="text" name="ids[0]">ids1:<input type="text" name="ids[1]"><input type="submit" value="提交"></form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class Phone {private String num;public String getNum() {return num;}public void setNum(String num) {this.num = num;}@Overridepublic String toString() {return "Phone{" +"num='" + num + '\'' +'}';}
}

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/606266.html

相关文章

数据结构:双端栈

基本介绍 双端栈是线性表的一种&#xff0c;也是栈的一个特殊分类我们可以用动态数组和栈的思想来实现双端栈因为它有两边的操作&#xff0c;比较特殊&#xff0c;所以不能借助前面两节实现的ArrayList或ArrayStack来实现&#xff0c;这里需要从头实现双端栈。因为入栈&#xf…

LeetCode简单题之错误的集合

题目 集合 s 包含从 1 到 n 的整数。不幸的是&#xff0c;因为数据错误&#xff0c;导致集合里面某一个数字复制了成了集合里面的另外一个数字的值&#xff0c;导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重…

短视频技术与市场动态

短视频技术与市场动态 今日头条是一个通用信息平台&#xff0c;致力于连接人与信息&#xff0c;让优质丰富的信息得到高效精准的分发&#xff0c;帮助用户看见更大的世界。 今日头条目前拥有推荐引擎、搜索引擎、关注订阅和内容运营等多种分发方式&#xff0c;囊括图文、视频、…

并发-操作系统底层工作的整体认识

冯诺依曼计算机模型 五大模块&#xff1a;输入、输出、计算器【cpu】、存储器【内存】、控制器 现在计算机硬件结构设计 CPU&#xff1a;控制、运算、数据

LeetCode简单题之图片平滑器

题目 包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) &#xff0c;平均灰度的计算是周围的8个单元和它本身的值求平均&#xff0c;如果周围的单元格不足八个&#xff0c;则尽可能多的利用它们。 示例 1: 输入: […

EDA技术与动态

EDA技术与动态 电子设计自动化&#xff08;英语&#xff1a;Electronic design automation&#xff0c;缩写&#xff1a;EDA&#xff09;是指利用计算机辅助设计&#xff08;CAD&#xff09;软件&#xff0c;来完成超大规模集成电路&#xff08;VLSI&#xff09;芯片的功能设计…

谷歌BERT预训练源码解析(一):训练数据生成

目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT&#xff0c;简单来说&#xff0c;它是一个基于Transformer架构&#xff0c;结合遮蔽词预测和上下句识别的预训练NLP模型。至…

LeetCode刷题:栈和队列的相关题目

前言1.用栈来实现队列1.1思路1.2图示1.3代码2.用队列来实现栈2.2思路2.2代码3.最小栈3.1思路3.2图示3.3代码4.删除字符串中所有相邻重复项4.1思路4.2代码前言 大家如果对于队列的性质等不太了解的话&#xff0c;我推荐一篇博客&#xff0c;写得很细节&#xff0c;大家可以去看看…