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

Spring MVC数据绑定POJO类型

【图书介绍】《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》_spring+springmvc+mybatis从零开始 代码、课件、教学视频与相关软件包下载-CSDN博客

《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》(杨章伟,刘祥淼)【摘要 书评 试读】- 京东图书

【图书介绍】案例可借鉴的Spring应用开发书-CSDN博客

Spring MVC简单数据绑定-CSDN博客

在使用简单数据类型绑定时,可以很容易地根据具体需求来定义方法中的形参类型和个数,然而在实际应用中,客户端请求可能会传递多个不同类型的参数数据,如果还使用简单数据类型进行绑定,就需要手动编写多个不同类型的参数,这种操作显然比较烦琐。此时就可以使用POJO类型进行数据绑定。

POJO类型的数据绑定就是将所有关联的请求参数封装在一个POJO中,然后在方法中直接使用该POJO作为形参来完成数据绑定。

【示例12-3】下面通过一个用户注册示例来演示POJO类型数据的绑定,具体实现步骤如下:

 在src目录下创建一个com.ssm.po包,在该包下创建一个User类来封装用户注册的信息参数,如文件12.5所示。

文件12.5  User.java

01	package com.ssm.po;
02	//用户类User
03	public class User {
04		private Integer id;
05		private String username;
06		private String password;
07		public Integer getId() {
08		    return id;
09		}
10		public void setId(Integer id) {
11		    this.id = id;
12		}
13		public String getUsername() {
14		    return username;
15		}
16		public void setUsername(String username) {
17		    this.username = username;
18		}
19		public String getPassword() {
20		    return password;
21	 	}
22		public void setPassword(String password) {
23		    this.password = password;
24		}
25	}

在控制器 UserController类中,编写向注册页面跳转和接收用户注册信息的方法,代码如下所示:

//向注册页面跳转
@RequestMapping("/toRegister")
public String toRegister() {	
	return "register";
}
//接收用户注册信息
@RequestMapping("/registerUser")
public String registerUser(User user) {
	String username=user.getUsername();
	String password=user.getPassword();
	System.out.println("username="+username);
	System.out.println("password="+password);		
	return "success";
}

在WEB-INF/jsp目录下,创建一个用户注册页面register.jsp,在该界面中编写用户注册表单,表单需要以POST方式提交,并且在提交时会发送一条以registerUser结尾的请求消息,如文件12.6所示。

文件12.6  register.jsp

01	<%@ page language="java" contentType="text/html; charset=UTF-8"
02	    pageEncoding="UTF-8"%>
03	<!DOCTYPE HTML>
04	<html>
05	<head>
06	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
07	  <title>注册</title>
08	</head>
09	<body>
10		<form action="${pageContext.request.contextPath}/registerUser" method="post">
11	   	用户名:<input type="text" name="username" /> <br />
12		密&nbsp;&nbsp;码:<input type="password" name="password" /> <br />
13		<input type="submit" value="注册" />	
14		</form>
15	 </body>
16	</html>

注意:在使用POJO类型数据绑定时,前端请求的参数名(本例中指form表单内各元素的name属性值)必须与要绑定的POJO类中的属性名一样,这样才会自动将请求数据绑定到POJO对象中,否则后台接收的参数值为null。

 发布并启动项目,在浏览器中访问地址http://localhost:8080/chapter12_war_exploded /toRegister,就会跳转到用户注册页面register.jsp,如图12.4所示。

图12.4  注册页面(register.jsp)

在图12.4所示的界面中填写对应的用户名和密码,然后单击“注册”按钮即可完成模拟注册功能。这里假设用户注册的用户名和密码分别为jack和jack_123,当单击“注册”按钮后,浏览器会跳转到结果页面,此时控制台的输出结果如图12.5所示。

图12.5  运行结果

从图12.5可以看出,使用POJO类型同样可以获取前端请求传递过来的数据信息,这就是POJO类型的数据绑定。

注意:在前端请求中,难免会有中文信息传递,例如,在图12.4所示的用户名和密码输入框中输入用户名“张三”和密码“123”时,虽然浏览器可以正确跳转到结果页面,但是在控制台中输出的中文信息会出现乱码。为了防止前端传入的中文数据出现乱码问题,可以使用Spring提供的编码过滤器来统一编码。如果要使用编码过滤器,只需要在web.xml中添加如下代码:

<!--配置编码过滤器-->
	<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>

上述代码中,通过<filter-mapping>元素的配置会拦截前端页面中的所有请求,并交由名称为CharacterEncodingFilter的编码过滤器类进行处理。在<filter>元素中,首先配置了编码过滤器类org.springframework.web.filter.CharacterEncodingFilter,然后通过初始化参数设置统一的编码为UTF-8。这样所有的请求信息都会以UTF-8的编码格式进行解析。


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

相关文章:

  • 基于springboot+vue的洪涝灾害应急信息管理系统设计与实现
  • springboot 加载本地jar到maven
  • 探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码
  • 56_多级缓存实现
  • 小米vela系统(基于开源nuttx内核)——如何使用信号量进行PV操作
  • 每日一题(三):压缩字符串(行程长度编码)
  • 【动态规划-矩阵】6.最大正方形
  • Linux 子系统 Ubuntu 安装MySQL 8
  • 【Apache Paimon】-- 为什么选择将 Spark 与 Paimon 集成,解决什么问题?
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现后台生成单个PDF文档
  • 虚假星标:GitHub上的“刷星”乱象与应对之道
  • 如何解决HTML和CSS相关情况下会导致页面布局不稳定?
  • ImportError: attempted relative import with no known parent package 报错的解决!
  • 2025年,华为认证HCIA、HCIP、HCIE 该如何选择?
  • 任务调度系统Quartz.net详解1-基本流程及Core表达式
  • 验证码的设置
  • Linux离线部署ELK
  • 【漫话机器学习系列】045.特征向量(Eigenvector)
  • 微信小程序开发设置支持scss文件
  • js:正则表达式
  • 每日学习30分轻松掌握CursorAI:Cursor隐私与安全设置
  • Django Admin 中实现 ECS 服务重启的细粒度权限控制
  • 面试加分项:Android Framework PMS 全面概述和知识要点
  • TaskBuilder前端页面JS脚本编辑
  • 【练习】力扣 热题100 两数之和
  • onlyoffice编辑服务部署