Spring MVC简单数据绑定
【图书介绍】《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》_spring+springmvc+mybatis从零开始 代码、课件、教学视频与相关软件包下载-CSDN博客
《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》(杨章伟,刘祥淼)【摘要 书评 试读】- 京东图书
编程与应用开发_夏天又到了的博客-CSDN博客
【图书介绍】案例可借鉴的Spring应用开发书-CSDN博客
简单数据绑定包括绑定默认数据类型、绑定简单数据类型、绑定POJO类型、绑定包装POJO等。
当前端请求的参数比较简单时,可以在后台方法的形参中直接使用Spring MVC提供的默认参数类型进行数据绑定。
常用的默认参数类型如下。
- HttpServletRequest:通过request对象获取请求信息。
- HttpServletResponse:通过 response对象处理响应信息。
- HttpSession:通过session对象得到session中存储的对象。
- 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从零开始学(视频教学版)(第3版)》_springspringmvcmybatis从零开始 代码、课件、教学视频与相关软件包下载-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版&…...
《SQL ORDER BY》
《SQL ORDER BY》 介绍 SQL(Structured Query Language)是一种用于管理关系数据库管理系统的标准编程语言。ORDER BY语句是SQL中的一个重要部分,它用于对查询结果进行排序。在本篇文章中,我们将详细介绍SQL ORDER BY语句的用法、语法、示例以及一些高级应用。 语法 ORD…...
RabbitMQ基础(简单易懂)
RabbitMQ高级篇请看: RabbitMQ高级篇-CSDN博客 目录 什么是RabbitMQ? MQ 的核心概念 1. RabbitMQ 的核心组件 2. Exchange 的类型 3. 数据流向说明 如何安装RabbitQueue? WorkQueue(工作队列): Fa…...
DNS解析域名简记
域名通常是由: 权威域名.顶级域名.根域名组成的。 从左往右,级别依次升高,这和外国人从小范围到大范围的说话习惯相关。(我们自己是更习惯先说大范围再说小范围,如XX省XX市XX区XX路) DNS解析域名时,会先查…...
【2024年华为OD机试】(B卷,100分)- 求最小步数 (Java JS PythonC/C++)
一、问题描述 题目描述 求从坐标零点到坐标点 n 的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3。 注意:途径的坐标点可以为负数。 输入描述 坐标点 n 输出描述 输出从坐标零点移动到坐标点 n 的最小步数。 备注 1 < n < 10^9 用例…...
<C++> XlsxWriter写EXCEL
XlsxWriter XlsxWriter是一个用于创建和写入Excel 2007及以上版本(.xlsx文件格式)的C库。以下是对XlsxWriter的详细介绍: 主要功能 文本、数字和公式写入:可以向多个工作表中写入文本、数字和公式。格式设置:支持丰…...
接上一主题,实现QtByteArray任意进制字符串转为十进制数
函数: /// <summary>/// n进制字符串转为十进制数,snDefine的长度最小为二进制数。/// 例子:/// _pn(_Math::strNToInt(_t("1010"), _t("01")));/// _pn(_Math::strNToInt(_t("-1010"), _t("0123…...
CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型
CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型 目录 CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现贝叶斯优化CNN-GRU融合多头注意力机制多变量回归预测ÿ…...
Java 如何传参xml调用接口获取数据
传参和返参的效果图如下: 传参: 返参: 代码实现: 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官方提供的组件,某个表单需求,单位性质字段如果是高校,那么工作单位则是高校的下拉选择格式,单位性质如果是其他的类型,工作单位则是手动…...
excel VBA 基础教程
这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏,打开VBA开发工具录制宏,相当于excel自动写代码(两个表格内容完全一致才可以) 查看宏代码保持含有宏程序的文件xlsm后缀(注意很容易有病毒)宏文件安全设置 使…...
基于异步IO的io_uring
基于异步IO的io_uring 1. io_uring的实现原理 io_uring使用了一种异步IO机制,它通过一对环形缓冲区(ring buffer)实现用户态于内核态之间的高效通信,用户只需将IO请求放入提交队列,当内核完成IO请求时,会将结果放入完成队列&…...
【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050
1. MPU6050简介 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometerÿ…...
仓颉笔记——写一个简易的web服务并用浏览器打开
创建一个web服务端,同时创建一个客户端去读取这个服务端。 也满足浏览器打开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任务: current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行: 定时周期调度设置…...
ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用
文章目录 ecmascript 历程严格模式与常规模式下的区别及注意事项严格模式下的属性删除Array.prototype.flat()和Array.prototype.flatMap() 实例应用 ecmascript 历程 变量声明要求 常规模式: 在常规模式下,使用var关键字声明变量时会出现变量提升现象。…...
基于ILI9341液晶屏+STM32U5单片的显示试验
试验要求: 1、通过串口,下发两个命令 STR和PIC; 2、STR模式: (1)串口输入什么,屏幕上显示什么 (2)如果屏幕满,自动下滚 (3)输入回车&a…...
最短路径算法
关注:算法思路,时间复杂度,适用情况(单源/多源,负边权/负边权回路) 复习弗雷德算法--基于动态规划--多源--负边权--时间复杂度O(v^3) int的最大值是0x7fffffff #include <iostream> using namesp…...
如何用 ESP32-CAM 做一个实时视频流服务器
文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用?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…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
