[Spring MVC学习03]参数绑定

news/2023/12/1 1:20:37

  • 前言
  • 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;大家可以去看看…

LeetCode简单题之机器人能否返回原点

题目 在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&#xff09;&#xff0c;L&…

谷歌BERT预训练源码解析(三):训练过程

目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程&#xff0c;BERT模型训练过程是在自己的TPU上进行的&#xff0c;这部分我没做过研究所以不做深入探讨。BERT针对两个任务同时训练。1.下一句预测。2.遮蔽词识别 下面介绍…

【解决方法】Python嵌套list如何换行

需求 输出一个excel&#xff0c;其中有一个单元格的数据要换行。 问题 list中间加‘\n’不会换行&#xff0c;会直接显示‘\n’字符。 解决方法 记住一个原则&#xff0c;str中的’\n’是能换行的。 想办法把list转为str即可。 示例 原代码 import pandas as pdout_lis…

《attention is all you need》解读

Motivation: 靠attention机制&#xff0c;不使用rnn和cnn&#xff0c;并行度高通过attention&#xff0c;抓长距离依赖关系比rnn强创新点&#xff1a; 通过self-attention&#xff0c;自己和自己做attention&#xff0c;使得每个词都有全局的语义信息&#xff08;长依赖由于 Se…

LeetCode简单题之句子中的有效单词数

题目 句子仅由小写字母&#xff08;‘a’ 到 ‘z’&#xff09;、数字&#xff08;‘0’ 到 ‘9’&#xff09;、连字符&#xff08;’-’&#xff09;、标点符号&#xff08;’!’、’.’ 和 ‘,’&#xff09;以及空格&#xff08;’ &#xff09;组成。每个句子可以根据空格…

LeetCode简单题之比特位计数

题目 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --&…

AMD与Intel,挑战英伟达GPU

AMD与Intel&#xff0c;挑战英伟达GPU 作为CPU界的霸主&#xff0c;英特尔对高性能GPU市场一直没有死心。从1998年和Real3D合作推出的i740独显&#xff0c;到2009年无故流产的Larrabee独显&#xff0c;再到去年公布的Xe GPU架构。任谁来都能看出&#xff0c;英特尔进军独立显卡…

LeetCode简单题之汉明距离

题目 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 示例 1&#xff1a; 输入&#xff1a;x 1, y 4 输出&#xff1a;2 解释&#xff1a; 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的…

LeetCode简单题之验证外星语词典

题目 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外星语中按字典序排列时…

从设计到消费产品

从设计到消费产品 半导体简介 半导体&#xff1a;现代电子产品的大脑 当点击、滑触、输入或与电子设备交谈时&#xff0c;希望指令能够得到正确的即时响应。 但是在这个过程中是什么在搜索、量化、优化和交付期望的结果&#xff1f; 在大多数情况下&#xff0c;是半导体。 “半…

Bert系列(二)——源码解读之模型主体

本篇文章主要是解读模型主体代码modeling.py。在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解&#xff0c;尤其是transformer的结构原理&#xff0c;网上的资料很多&#xff0c;本文内容对原理部分就不做过多的介绍了。 我自己写出来其中一个目的也是帮助自己学习整…

EDA技术与市场分析

EDA技术与市场分析 EDA被誉为“芯片之母”&#xff0c;是电子设计的基石产业。拥有百亿美金的EDA市场构筑了整个电子产业的根基&#xff0c;可以说“谁掌握了EDA&#xff0c;谁就有了芯片领域的主导权。 ”近年来&#xff0c;在多个领域面临关键核心技术“卡脖子”的危机&#…
最新文章