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.pswp.cn/web/66046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66046.shtml
英文地址,請注明出處:http://en.pswp.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;以提高全球用戶的訪問速度并減輕源站服務器的負載。然而&…