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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统Linux实时化(四)Xenomai应用开发测试

1、Xenomai 原生API 任务管理 Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数: int rt_task_create (RT_TASK task, const char name, int stksize, int prio, intmode) ; 任务的创建;int rt_task_start(RT_TASK task, void(entry)(void cookie), void cookie…

如何在Ubuntu上安装和配置Git

版本控制系统&#xff08;VCS&#xff09;是软件开发过程中不可或缺的工具之一&#xff0c;它帮助开发者跟踪代码变更、协作开发以及管理不同版本的项目。Git作为当前最流行的分布式版本控制系统&#xff0c;因其高效性和灵活性而广受青睐。本文将指导你如何在Ubuntu操作系统上…

[python] bisect_right

等价于C中的upper_bound bisect_right 函数介绍 在Python的 bisect 模块中&#xff0c; bisect_right &#xff08;别名 bisect &#xff09;用于在有序序列中查找插入点。插入点是在序列中插入元素后&#xff0c;序列仍保持有序的位置。 bisect_right 函数返回的插入点是在已…

Mac上安装Label Studio

在Mac上安装Anaconda并随后安装Label Studio&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在Mac上安装Anaconda 首先&#xff0c;你需要从Anaconda的官方网站下载适用于Mac的安装程序。访问Anaconda官网&#xff0c;点击“Download Anaconda”按钮&#xff0c;选择适合M…

vscode开启调试模式,结合Delve调试器调试golang项目详细步骤

1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板&#xff0c;输入Go: Install/Update Tools&#xff0c;并单击该命令执行&#xff0c;安装或更新Go语…

SQL面试题1:连续登陆问题

引言 场景介绍&#xff1a; 许多互联网平台为了提高用户的参与度和忠诚度&#xff0c;会推出各种连续登录奖励机制。例如&#xff0c;游戏平台会给连续登录的玩家发放游戏道具、金币等奖励&#xff1b;学习类 APP 会为连续登录学习的用户提供积分&#xff0c;积分可兑换课程或…

爬山算法与模拟退火算法的全方面比较

一、基本概念与原理 1. 爬山算法 爬山算法是一种基于启发式的局部搜索算法,通过不断地向当前解的邻域中搜索更优解来逼近全局最优解。它的核心思想是,从当前解出发,在邻域内找到一个使目标函数值更大(或更小)的解作为新的当前解,直到找不到更优的解为止。 2.模拟退火算…

PostgreSQL 超级管理员详解

1. 什么是 PostgreSQL 超级管理员 PostgreSQL 超级管理员&#xff08;superuser&#xff09;是拥有数据库系统最高权限的用户。他们可以执行任何数据库操作&#xff0c;包括但不限于创建和删除数据库、用户、表空间、模式等。超级管理员权限是 PostgreSQL 中权限的最高级别。 …

安装本地测试安装apache-doris

一、安装前规划 我的服务器是三台麒麟服务器,2台跑不起来,这是我本地的,内存分配的也不多。 fe192.168.1.13 主数据库端口9030访问 8Gbe192.168.1.13内存4G 硬盘50be192.168.1.14内存4G 硬盘50be192.168.1.12内存4G 硬盘5013同时安装的fe和be 。 原理:192.168.1.13 服…

GPT(General Purpose Timer)定时器

基本概念&#xff1a; 在嵌入式系统中&#xff0c;General Purpose Timer&#xff08;GPT&#xff09;是一种非常重要的硬件组件&#xff0c;用于提供定时功能。 定义&#xff1a;通用定时器是一种能够提供精确时间测量和控制功能的电子设备或电路模块。它可以产生周期性的时…

集中式架构vs分布式架构

一、集中式架构 如何准确理解集中式架构 1. 集中式架构的定义 集中式架构是一种将系统的所有计算、存储、数据处理和控制逻辑集中在一个或少数几个节点上运行的架构模式。这些中央节点&#xff08;服务器或主机&#xff09;作为系统的核心&#xff0c;负责处理所有用户请求和…

数据挖掘实训:天气数据分析与机器学习模型构建

随着气候变化对各行各业的影响日益加剧&#xff0c;精准的天气预测已经变得尤为重要。降雨预测在日常生活中尤其关键&#xff0c;例如农业、交通和灾害预警等领域。本文将通过机器学习方法&#xff0c;利用历史天气数据预测明天是否会下雨&#xff0c;具体内容包括数据预处理、…

kalilinux - 目录扫描之dirsearch

情景导入 先简单介绍一下dirsearch有啥用。 假如你现在访问一个网站&#xff0c;例如https://www.example.com/ 它是一个电商平台或者其他功能性质的平台。 站在开发者的角度上思考&#xff0c;我们只指导https://www.example.com/ 但不知道它下面有什么文件&#xff0c;文…

关于 ThinkPHP 与 PostgreSQL 结合使用的一些要点

ThinkPHP 是一款流行的 PHP 开发框架&#xff0c;而 PostgreSQL 是功能强大的开源关系型数据库。它们可以结合使用来开发各类应用&#xff0c;以下是关于 ThinkPHP 与 PostgreSQL 结合使用的一些要点&#xff1a; 配置数据库连接 编辑配置文件&#xff1a;在 ThinkPHP 项目中&…

进程同步之信号量机制

信号量机制 信号量机制是一种用于进程同步和互斥的基本工具&#xff0c;特别是在并发编程中&#xff0c;广泛用于控制对共享资源的访问&#xff0c;避免数据竞争和死锁等问题。信号量机制由荷兰计算机科学家Edsger Dijkstra在1965年提出&#xff0c;并在操作系统的进程同步中发…

SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制

车载以太网协议栈总共可划分为五层&#xff0c;分别为物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;应用层&#xff0c;其中今天所要介绍的内容SOME/IP就是一种应用层协议。 SOME/IP协议内容按照AUTOSAR中的描述&#xff0c;我们可以更进一步…

springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)

线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用&#xff0c;凭借uniapp 可以在h5 小程序 app…

基于celery的任务管理,本文主要是处理自己的算法,暴露API,管理任务并发,多线程

基于celery的任务管理&#xff0c;本文主要是处理自己的算法&#xff0c;暴露API&#xff0c;管理任务并发&#xff0c;多线程 基本需求描述潜在问题主函数配置文件 基本需求描述 暴露API&#xff0c;供其他人调用算法。方便查看任务状态。因为服务器资源有限&#xff0c;控制…

Java(7)常用的工具类

1.Collections集合工具类 内置了大量对集合操作的静态方法&#xff0c;可以通过类名直接调用方法。 方法的种类&#xff1a;最大值max、最小值min、sort排序...详见API帮助文档 import java.util.ArrayList; import java.util.Collections; import java.util.List;public cl…

【Varnish】:解决 Varnish 7.6 CDN 静态资源缓存失效问题

项目场景&#xff1a; 在一个使用Varnish作为反向代理的Web应用中&#xff0c;我们依赖CDN&#xff08;内容分发网络&#xff09;来缓存静态资源&#xff08;如图片、CSS、JavaScript文件等&#xff09;&#xff0c;以提高全球用户的访问速度并减轻源站服务器的负载。然而&…