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  运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/953773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…

【pytorch】注意力机制-1

1 注意力提示 1.1 自主性的与非自主性的注意力提示 非自主性提示&#xff1a; 可以简单地使用参数化的全连接层&#xff0c;甚至是非参数化的最大汇聚层或平均汇聚层。 自主性提示 注意力机制与全连接层或汇聚层区别开来。在注意力机制的背景下&#xff0c;自主性提示被称为查…

大数据技术Kafka详解 ⑤ | Kafka中的CAP机制

目录 1、分布式系统当中的CAP理论 1.1、CAP理论 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP机制 C软件异常排查从入门到精通系列教程&#xff08;核心精品专栏&#xff0c;订阅量已达600多个&#xff0c;欢迎订阅&#xff0c;持续更新…

ESP-IDF学习记录(5) 画一块esp32-c3 PCB板

最近看了半个多月&#xff0c;趁着嘉立创官方活动&#xff0c;研究esp32-c3规格书&#xff0c;白嫖PCB 和元器件。原本计划按照官方推荐的搞个四层板&#xff0c;结果打样太贵&#xff0c;火速改成双层板&#xff0c;用了官方的券。小于10*10,也可以使用嘉立创的免费打样。 下面…

nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控

我们可以详细地配置 Nginx 来实现正向代理、反向代理、SSL、负载均衡和虚拟域名。同时&#xff0c;我会介绍如何使用一些中间件来监控 Nginx 的状态和性能。 1. 安装 Nginx 如果你还没有安装 Nginx&#xff0c;可以通过以下命令进行安装&#xff08;以 Ubuntu 为例&#xff0…

Netty 入门学习

前言 学习Spark源码绕不开通信&#xff0c;Spark通信是基于Netty实现的&#xff0c;所以先简单学习总结一下Netty。 Spark 通信历史 最开始: Akka Spark 1.3&#xff1a; 开始引入Netty&#xff0c;为了解决大块数据&#xff08;如Shuffle&#xff09;的传输问题 Spark 1.6&…

鸿蒙报错Init keystore failed: keystore password was incorrect

报错如下&#xff1a; > hvigor ERROR: Failed :entry:defaultSignHap... > hvigor ERROR: Tools execution failed. 01-13 16:35:55 ERROR - hap-sign-tool: error: Init keystore failed: keystore password was incorrect * Try the following: > The key stor…

IDEA的Git界面(ALT+9)log选项不显示问题小记

IDEA的Git界面ALT9 log选项不显示问题 当前问题idea中log界面什么都不显示其他选项界面正常通过命令查询git日志正常 预期效果解决办法1. 检查 IDEA 的 Git 设置2. 刷新 Git Log (什么都没有大概率是刷新不了)3. 检查分支和日志是否存在4. 清理 IDEA 缓存 (我用这个成功解决)✅…

ffmpeg硬件编码

使用FFmpeg进行硬件编码可以显著提高视频编码的性能&#xff0c;尤其是在处理高分辨率视频时。硬件编码利用GPU或其他专用硬件&#xff08;如Intel QSV、NVIDIA NVENC、AMD AMF等&#xff09;来加速编码过程。以下是使用FFmpeg进行硬件编码的详细说明和示例代码。 1. 硬件编码支…

65.在 Vue 3 中使用 OpenLayers 绘制带有箭头的线条

前言 在现代的前端开发中&#xff0c;地图已经成为许多项目的核心功能之一。OpenLayers 是一个强大的开源地图库&#xff0c;它提供了丰富的功能和高度的定制化支持。在本篇文章中&#xff0c;我将向大家展示如何在 Vue 3 中使用 OpenLayers 绘制带有箭头的线条。 我们将实现…

C++内存泄露排查

内存泄漏是指程序动态分配的内存未能及时释放&#xff0c;导致系统内存逐渐耗尽&#xff0c;最终可能造成程序崩溃或性能下降。在C中&#xff0c;内存泄漏通常发生在使用new或malloc等分配内存的操作时&#xff0c;但没有正确地使用delete或free来释放这块内存。 在日常开发过程…

Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速

本文使用 Ubuntu 环境。Ubuntu 直接使用 APT 安装的就支持 CUDA 加速。本文使用这样下载的版本进行演示&#xff0c;你自己编译或者其他源的版本可能会不同。 ffmpeg 的一些介绍&#xff0c;以及 macOS 版本的 ffmpeg 硬件加速请见《macOS上如何安装&#xff08;不需要编译安装…

linux: 文本编辑器vim

文本编辑器 vi的工作模式 (vim和vi一致) 进入vim的方法 方法一:输入 vim 文件名 此时左下角有 "文件名" 文件行数,字符数量 方法一: 输入 vim 新文件名 此时新建了一个文件并进入vim,左下角有 "文件名"[New File] 灰色的长方形就是光标,输入文字,左下…

调用企业微信新建日程 API 报 api forbidden 的解决方案

报错详细信息&#xff1a; {"errcode":48002,"errmsg":"api forbidden, hint: [1266719663513970651415782], from ip: xxx.xxx.xxx.xxx, more info at https://open.work.weixin.qq.com/devtool/query?e48002" } 解决方案&#xff1a; 1. 登…

rtthread学习笔记系列(4/5/6/7/15/16)

文章目录 4. 杂项4.1 检查是否否是2的幂 5. 预编译命令void类型和rt_noreturn类型的区别 6.map文件分析7.汇编.s文件7.1 汇编指令7.1.1 BX7.1.2 LR链接寄存器7.1.4 []的作用7.1.4 简单的指令 7.2 MSR7.3 PRIMASK寄存器7.4.中断启用禁用7.3 HardFault_Handler 15 ARM指针寄存器1…

微软与腾讯技术交锋,TRELLIS引领3D生成领域多格式支持新方向

去年 11 月&#xff0c;腾讯推出 Hunyuan3D 生成模型&#xff0c;是业界首个同时支持文字和图像生成 3D 的开源大模型。紧接着不到一个月&#xff0c;微软便发布了全新框架 TRELLIS&#xff0c;加入 3D 资产生成领域的竞争中。TRELLIS 支持多格式输出&#xff0c;包括辐射场、3…

【C++】类与对象(中上)(难点部分)

目录 &#x1f495;1.类的默认成员函数 &#x1f495;2.构造函数 &#x1f495;3.析构函数 &#x1f495;4.缺省值 &#x1f495;5.拷贝构造函数 &#xff08;最新更新时间——2025.1.14&#xff09; 这世间没有绝境 只有对处境绝望的人 &#x1f495;1.类的默认成员函数 默…

Apache Hop从入门到精通 第三课 Apache Hop下载安装

1、下载 官方下载地址&#xff1a;https://hop.apache.org/download/&#xff0c;本教程是基于apache-hop-client-2.11.0.zip进行解压&#xff0c;需要jdk17&#xff0c;小伙伴们可以根据自己的需求下载相应的版本。如下图所示 2、下载jdk17&#xff08;https://www.microsoft…

springboot房屋租赁管理系统

Spring Boot房屋租赁管理系统是一种基于Spring Boot框架构建的&#xff0c;旨在解决传统租房市场中房源信息更新不及时、虚假信息泛滥、交易流程繁琐等问题的信息化解决方案。 一、系统背景与目的 随着城市化进程的加快和人口流动性的增强&#xff0c;租房市场需求急剧增长。…

计算机网络 (35)TCP报文段的首部格式

前言 计算机网络中的TCP&#xff08;传输控制协议&#xff09;报文段的首部格式是TCP协议的核心组成部分&#xff0c;它包含了控制TCP连接的各种信息和参数。 一、TCP报文段的结构 TCP报文段由首部和数据两部分组成。其中&#xff0c;首部包含了控制TCP连接的各种字段&#xff…