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

Spring MVC简单数据绑定

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

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

编程与应用开发_夏天又到了的博客-CSDN博客

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

简单数据绑定包括绑定默认数据类型、绑定简单数据类型、绑定POJO类型、绑定包装POJO等。

12.2.1  绑定默认数据类型

当前端请求的参数比较简单时,可以在后台方法的形参中直接使用Spring MVC提供的默认参数类型进行数据绑定。

常用的默认参数类型如下。

  1. HttpServletRequest:通过request对象获取请求信息。
  2. HttpServletResponse:通过 response对象处理响应信息。
  3. HttpSession:通过session对象得到session中存储的对象。
  4. Model/ModelMap:Model是一个接口,ModelMap是一个接口实现,作用是将Model数据填充到request域。

【示例12-1】以HttpServletRequest类型的使用为例进行演示说明,具体步骤如下:

 在IntelliJ IDEA中创建一个名为chapter12的Web项目,然后将Spring MVC相关JAR包添加到项目的lib目录下,并发布到类路径中。添加JAR包后的目录如图12.1所示。

图12.1  Spring MVC相关JAR包

 在web.xml中配置Spring MVC的前端控制器等信息,如文件12.1所示。

文件12.1  web.xml

01	<?xml version="1.0" encoding="UTF-8"?>
02	<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
03		xmlns="http://xmlns.jcp.org/xml/ns/javaee"
04		xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
05	          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
06	      	id="WebApp_ID" version="4.0">
07		<servlet>
08			<!-- 配置前端过滤器 -->
09			<servlet-name>springmvc</servlet-name>
10		<servlet-class>org.srpingframework.web.servlet.DispatcherServlet
</servlet-class>
11			<!-- 初始化时加载配置文件 -->
12			<init-param>
13				<param-name>contextConfigLocation</param-name>
14				<param-value>classpath:springmvc-config.xml</param-value>
15			</init-param>
16			<!-- 表示容器在启动时立即加载Servlet -->
17			<load-on-startup>1</load-on-startup>
18		</servlet>
19		<servlet-mapping>
20			<servlet-name>springmvc</servlet-name>
21			<url-pattern>/</url-pattern>
22		</servlet-mapping>
23	</web-app>

 在src目录下创建Spring MVC的核心配置文件springmvc-config.xml,在该文件中配置组件扫描器和视图解析器(参见注释),如文件12.2所示。

文件12.2  springmvc-config.xml

01	<?xml version="1.0" encoding="UTF-8"?>
02	<beans xmlns="http://www.springframework.org/schema/beans"
03		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04		xmlns:context="http://www.springframework.org/schema/context"
05		xsi:schemaLocation="http://www.springframework.org/schema/beans 
06	        http://www.springframework.org/schema/beans/spring-beans.xsd
07	        http://www.springframework.org/schema/context
08	        http://www.springframework.org/schema/context/spring-context
.xsd">
09		<!--指定需要扫描的包 -->
10		<context:component-scan base-package="com.ssm.controller" />
11		<!-- 定义视图解析器 -->
12		<bean id="viewResolver"
13			class="org.springframework.web.servlet.view.
InternalResourceViewResolver">
14			<!-- 设置前缀 -->
15			<property name="prefix" value="/WEB-INF/jsp/" />
16			<!-- 设置后缀 -->
17			<property name="suffix" value=".jsp" />
18		</bean>
19	</beans>

在src目录下创建一个com.ssm.controller包,在该包下创建一个用于用户操作的控制器类UserController,编写后的代码如文件12.3所示。

文件12.3  UserController.java

01	package com.ssm.controller;
02	import javax.servlet.http.HttpServletRequest;
03	import org.springframework.stereotype.Controller;
04	import org.springframework.web.bind.annotation.RequestMapping;
05	//@Controller注解
06	@Controller
07	public class UserController {
08	    //@RequestMapping注解在方法上
09		@RequestMapping(value="/selectUser")
10		public String selectUser(HttpServletRequest request) {
11			//获取请求地址中的参数id的值
12			String id=request.getParameter("id");
13			System.out.println("id="+id);
14			return "success";
15		}
16	}

在文件12.3中,使用注解方式定义了一个控制器类,同时定义了方法的访问路径。在方法参数中使用了HttpServletRequest类型,并通过该对象的getParameter()方法获取了指定的参数。为了方便查看结果,将获取的参数进行输出打印,最后返回一个名为success的视图,Spring MVC会通过视图解析器在WEB-INF/jsp路径下寻找success.jsp文件。

注意:后台在编写控制器类时,通常会根据需要操作的业务对控制器类进行规范命名。例如,如果要编写一个对用户操作的控制器类,可以将控制器类命名为UserController,然后在该控制器类中就可以编写任何有关用户操作的方法。

 在WEB-INF目录下创建一个名为jsp的文件夹,然后在该文件夹中创建页面文件success.jsp,该页面只作为正确执行操作后的响应页面,没有其他业务逻辑,如文件12.4所示。

文件12.4  success.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	      ok!,执行成功
11	  </body>
12	</html>

将chapter12项目发布到Tomcat服务器中并启动,在浏览器中访问地址http://localhost:8080/chapter12_war_exploded/selectUser?id=1,其显示效果如图12.2所示。

图12.2  执行结果(success.jsp页面)

此时的控制台输出信息如图12.3所示。从结果中可以看出,后台方法已从请求地址中正确地获取到了id的参数信息,这说明使用默认的HttpServletRequest参数类型已经完成了数据绑定。

图12.3  运行结果

相关文章:

Spring MVC简单数据绑定

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》_springspringmvcmybatis从零开始 代码、课件、教学视频与相关软件包下载-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&…...

《SQL ORDER BY》

《SQL ORDER BY》 介绍 SQL(Structured Query Language)是一种用于管理关系数据库管理系统的标准编程语言。ORDER BY语句是SQL中的一个重要部分,它用于对查询结果进行排序。在本篇文章中,我们将详细介绍SQL ORDER BY语句的用法、语法、示例以及一些高级应用。 语法 ORD…...

RabbitMQ基础(简单易懂)

RabbitMQ高级篇请看&#xff1a; RabbitMQ高级篇-CSDN博客 目录 什么是RabbitMQ&#xff1f; MQ 的核心概念 1. RabbitMQ 的核心组件 2. Exchange 的类型 3. 数据流向说明 如何安装RabbitQueue&#xff1f; WorkQueue&#xff08;工作队列&#xff09;&#xff1a; Fa…...

DNS解析域名简记

域名通常是由: 权威域名.顶级域名.根域名组成的。 从左往右&#xff0c;级别依次升高&#xff0c;这和外国人从小范围到大范围的说话习惯相关。&#xff08;我们自己是更习惯先说大范围再说小范围&#xff0c;如XX省XX市XX区XX路&#xff09; DNS解析域名时&#xff0c;会先查…...

【2024年华为OD机试】(B卷,100分)- 求最小步数 (Java JS PythonC/C++)

一、问题描述 题目描述 求从坐标零点到坐标点 n 的最小步数&#xff0c;一次只能沿横坐标轴向左或向右移动 2 或 3。 注意&#xff1a;途径的坐标点可以为负数。 输入描述 坐标点 n 输出描述 输出从坐标零点移动到坐标点 n 的最小步数。 备注 1 < n < 10^9 用例…...

<C++> XlsxWriter写EXCEL

XlsxWriter XlsxWriter是一个用于创建和写入Excel 2007及以上版本&#xff08;.xlsx文件格式&#xff09;的C库。以下是对XlsxWriter的详细介绍&#xff1a; 主要功能 文本、数字和公式写入&#xff1a;可以向多个工作表中写入文本、数字和公式。格式设置&#xff1a;支持丰…...

接上一主题,实现QtByteArray任意进制字符串转为十进制数

函数&#xff1a; /// <summary>/// n进制字符串转为十进制数&#xff0c;snDefine的长度最小为二进制数。/// 例子&#xff1a;/// _pn(_Math::strNToInt(_t("1010"), _t("01")));/// _pn(_Math::strNToInt(_t("-1010"), _t("0123…...

CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型

CNN-GRU-MATT加入贝叶斯超参数优化&#xff0c;多输入单输出回归模型 目录 CNN-GRU-MATT加入贝叶斯超参数优化&#xff0c;多输入单输出回归模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现贝叶斯优化CNN-GRU融合多头注意力机制多变量回归预测&#xff…...

Java 如何传参xml调用接口获取数据

传参和返参的效果图如下&#xff1a; 传参&#xff1a; 返参&#xff1a; 代码实现&#xff1a; 1、最外层类 /*** 外层DATA类*/ XmlRootElement(name "DATA") public class PointsXmlData {private int rltFlag;private int failType;private String failMemo;p…...

uniapp 之 uni-forms校验提示【提交的字段[‘xxx‘]在数据库中并不存在】解决方案

目录 场景问题代码结果问题剖析解决方案 场景 uni-forms官方组件地址 使用uniapp官方提供的组件&#xff0c;某个表单需求&#xff0c;单位性质字段如果是高校&#xff0c;那么工作单位则是高校的下拉选择格式&#xff0c;单位性质如果是其他的类型&#xff0c;工作单位则是手动…...

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏&#xff0c;打开VBA开发工具录制宏,相当于excel自动写代码&#xff08;两个表格内容完全一致才可以&#xff09; 查看宏代码保持含有宏程序的文件xlsm后缀&#xff08;注意很容易有病毒&#xff09;宏文件安全设置 使…...

基于异步IO的io_uring

基于异步IO的io_uring 1. io_uring的实现原理 io_uring使用了一种异步IO机制&#xff0c;它通过一对环形缓冲区(ring buffer)实现用户态于内核态之间的高效通信&#xff0c;用户只需将IO请求放入提交队列&#xff0c;当内核完成IO请求时&#xff0c;会将结果放入完成队列&…...

【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050

1. MPU6050简介 MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X、Y、Z轴的加速度、角速度参数&#xff0c;通过数据融合&#xff0c;可进一步得到姿态角&#xff0c;常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计&#xff08;Accelerometer&#xff…...

仓颉笔记——写一个简易的web服务并用浏览器打开

创建一个web服务端&#xff0c;同时创建一个客户端去读取这个服务端。 也满足浏览器打开web的需求。 直接上代码。 import net.http.* import std.time.* import std.sync.* import std.log.LogLevel// 1. 构建 Server 实例 let server ServerBuilder().addr("127.0.0.1&…...

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务&#xff1a; current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行&#xff1a; 定时周期调度设置…...

ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用

文章目录 ecmascript 历程严格模式与常规模式下的区别及注意事项严格模式下的属性删除Array.prototype.flat()和Array.prototype.flatMap() 实例应用 ecmascript 历程 变量声明要求 常规模式&#xff1a; 在常规模式下&#xff0c;使用var关键字声明变量时会出现变量提升现象。…...

基于ILI9341液晶屏+STM32U5单片的显示试验

试验要求&#xff1a; 1、通过串口&#xff0c;下发两个命令 STR和PIC&#xff1b; 2、STR模式&#xff1a; &#xff08;1&#xff09;串口输入什么&#xff0c;屏幕上显示什么 &#xff08;2&#xff09;如果屏幕满&#xff0c;自动下滚 &#xff08;3&#xff09;输入回车&a…...

最短路径算法

关注&#xff1a;算法思路&#xff0c;时间复杂度&#xff0c;适用情况&#xff08;单源/多源&#xff0c;负边权/负边权回路&#xff09; 复习弗雷德算法--基于动态规划--多源--负边权--时间复杂度O(v^3) int的最大值是0x7fffffff #include <iostream> using namesp…...

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用&#xff1f;GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...

Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)

最近项目中遇到问题,OpenCV的Jar包在程序打包后,找不到相关的类,比如MAT,这个时候怀疑OpenCV_4.10的Jar没有和应用程序一起打包,后面排查到确实是没有打包进去,特此记录,便于日后查阅。 <!-- 加载lib目录下的opencv包 --> <dependency><groupId>org…...

OpenClaw技能安装失败全解析:从依赖冲突到网络问题的系统性解决方案

1. 项目概述&#xff1a;当技能“卡住”时&#xff0c;我们遇到了什么&#xff1f;最近在折腾OpenClaw这类开源AI助手平台时&#xff0c;不少朋友都踩进了同一个坑&#xff1a;从官方市场或者第三方渠道找到了心仪的技能&#xff08;Skill&#xff09;&#xff0c;点击“安装”…...

从测速到配置:一套完整的cFosSpeed网络加速保姆级教程(适用于小白)

从零开始掌握cFosSpeed&#xff1a;网络加速全流程实战指南对于经常进行在线游戏、视频会议或大文件传输的用户来说&#xff0c;网络延迟和带宽利用率低下往往是影响体验的关键痛点。cFosSpeed作为一款专业的网络流量优化工具&#xff0c;能够显著改善这些问题&#xff0c;但许…...

从入门到上岗,Java+AI 复合型人才养成攻略

当下编程行业格局正在悄然改变,纯 Java 后端岗位内卷日趋严重,薪资增长逐步放缓;纯粹的 AI 算法岗门槛居高不下,对学历、数理功底要求严苛,普通开发者很难入局。 而Java+AI 复合型开发顺势成为行业刚需岗位,既依托成熟的 Java 体系承接业务开发,又能融入人工智能技术实…...

sudo企业级应用【20260525】001篇

文章目录 一、总体设计思路 1️⃣ 设计原则 2️⃣ 日志策略(重点) 二、10 个真实生产场景(含 sudoers 配置) 🔹 Linux 系统管理(3 个) ✅ 场景 1:基础运维(用户 / 权限) ✅ 场景 2:磁盘与文件系统 ✅ 场景 3:网络与防火墙 🔹 云管理(2 个) ✅ 场景 4:云 CLI …...

销售怎么通过各种方法获取电话号码

第一种就是那个用爬虫电话号码&#xff0c;然后再打电话给客户。第二种是在别人的挪车电话看车挪车电话&#xff0c;然后再打电话找客户。第三就是。扫楼一顿顿的扫&#xff0c;第四就是这个那种商店&#xff0c;一个个的去问陌拜地推一个个的问店子要不要贷款&#xff0c;去问…...

AI写的论文双率如何压到20%以下?这几款工具实测有效

毕业季、投稿季用AI写论文已经成为不少人的高效选择&#xff0c;但查重率飘红、AIGC疑似率超标两大问题&#xff0c;让很多人犯了难。2026年学术检测标准持续收紧&#xff0c;知网、维普及主流AIGC检测系统同步上线双检规则&#xff0c;两项指标均控制在20%以下才符合基本提交要…...

可解释AI新突破:基于局部帕累托最优的模型解释框架

1. 项目概述&#xff1a;当AI模型成为“黑箱”&#xff0c;我们如何撬开它&#xff1f;在机器学习项目里摸爬滚打十几年&#xff0c;我见过太多这样的场景&#xff1a;团队花大力气训练出一个准确率高达95%的复杂模型&#xff08;比如深度神经网络&#xff09;&#xff0c;业务…...

Noto字体终极指南:告别“豆腐块“,让全球文字清晰显示

Noto字体终极指南&#xff1a;告别"豆腐块"&#xff0c;让全球文字清晰显示 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字世界中&#xff0c;你是否经常看到那些令人困…...

Godot 4.2 + C# 避坑指南:手把手教你打包发布你的第一个2D游戏到Steam

Godot 4.2 C# 避坑指南&#xff1a;从开发到Steam发布的完整实战手册当你终于完成心爱的2D游戏开发&#xff0c;准备向全世界展示你的作品时&#xff0c;打包发布这个看似简单的环节往往会成为独立开发者最大的噩梦。特别是使用Godot 4.2搭配C#的项目&#xff0c;从导出设置到…...

Diablo Edit2:3步掌握暗黑破坏神2存档修改的终极秘籍

Diablo Edit2&#xff1a;3步掌握暗黑破坏神2存档修改的终极秘籍 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神2中刷装备的漫长过程感到疲惫吗&#xff1f;Diablo Edit2这款免费…...