电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring MVC數據綁定概述及原理詳解

瀏覽:3日期:2023-08-30 18:07:11

數據綁定概述

在執行程序時,Spring MVC根據客戶端請求參數的不同,將請求消息中的信息以一定的方式轉換并綁定到控制器類的方法參數中。

這種將請求消息數據與后臺方法參數建立連接的過程就是 Spring MVC中的數據綁定。

在數據綁定過程中,Spring MVC框架會通過數據綁定組件(DataBinder)將請求參數串的內容進行類型轉換,然后將轉換后的值賦給控制器類中方法的形參,這樣后臺方法就可以正確綁定并獲取客戶端請求攜帶的參數。具體的信息處理過程的步驟如下。

(1)Spring MVC將ServletRequest對象傳遞給 DataBinder。

(2)將處理方法的入參對象傳遞給 DataBinder。

(3) DataBinder調用ConversionService組件進行數據類型轉換、數據格式化等工作,并將 ServletRequest對象中的消息填充到參數對象中。

(4)調用Validator組件對已經綁定了請求消息數據的參數對象進行數據合法性校驗。

(5)校驗完成后會生成數據綁定結果 BindingResult對象,Spring MVC會將BindingResult對象中的內容賦給處理方法的相應參數。

根據客戶端請求參數類型和個數的不同,將 Spring Mvc中的數據綁定主要分為簡單數據綁定和復雜數據綁定

1.簡單數據綁定

綁定默認數據類型

UserController.java:

package com.ssm.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class UserController {@RequestMapping(value='/selectUser')public String selectUser(HttpServletRequest request) {String id=request.getParameter('id');System.out.println('id='+id);return 'success';}}

使用注解方式定義了一個控制器類,同時定義了方法的訪問路徑。在方法參數中使用了HttpServletRequest類型,并通過該對象的 getParameter()方法獲取了指定的參數。為了方便查看結果,將獲取的參數進行輸出打印,最后返回一個名為“success”的視圖,Spring MVC會通過視圖解析器在“WEB-INF/jsp”路徑下尋找“success.jsp”文件。

綁定簡單數據類型

簡單數據類型的綁定,就是指Java中幾種基本數據類型的綁定,如int、String、Double等類型。

@RequestMapping(value='/selectUser')public String selectUser(Integer id) {System.out.println('id='+id);return 'success';}

與默認數據類型案例中的 selectUser()方法相比,此方法中只是將 HttpServletrEquest參數類型替換為了 Integer類型。

@RequestParam注解主要用于對請求中的參數進行定義,在使用時可以指定它的4個屬性,具體如表12.1所示。

Spring MVC數據綁定概述及原理詳解

綁定POJO類型

在使用簡單數據類型綁定時,可以很容易地根據具體需求來定義方法中的形參類型和個數,然而在實際應用中,客戶端請求可能會傳遞多個不同類型的參數數據,如果還使用簡單數據類型進行綁定,那么就需要手動編寫多個不同類型的參數,這種操作顯然比較煩瑣。此時就可以使用POJO類型進行數據綁定。

POJO類型的數據綁定就是將所有關聯的請求參數封裝在一個POJO中,然后在方法中直接使用該POJO作為形參來完成數據綁定。

@RequestMapping('/toRegister')public String toRegister() {return 'register';}@RequestMapping('/registerUser')public String registerUser(User user) {String username=user.getUserName();String password=user.getPassword();System.out.println('username='+username);System.out.println('password='+password);return 'success';}

綁定包裝POJO

使用簡單POJO類型已經可以完成多數的數據綁定,但有時客戶端請求中傳遞的參數會比較復雜。例如,在老師查詢學生時,頁面傳遞的參數可能包括班級名稱和學生號等信息,這就包含了班級和學生兩個對象的信息。如果將班級和學生的所有查詢條件都封裝在一個簡單POJO中,顯然會比較混亂,這時就可以考慮使用包裝POJO類型的數據綁定。

所謂的包裝POJO,就是在一個POJO中包含另一個簡單POJO。例如,在學生對象中包含班級對象。這樣在使用時,就可以通過學生查詢到班級信息。

StudentController. java:

package com.ssm.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.ssm.po.Banji;import com.ssm.po.Student;@Controllerpublic class StudentController {//向學生查詢頁面跳轉@RequestMapping('/tofindStudentWithBanji')public String tofindStudentWithBanji(){return 'student';}//查詢學生和班級信息@RequestMapping('/findStudentWithBanji')public String findStudentWithBanji(Student student){Integer stu_id=student.getStu_id();Banji banji=student.getBanji();String banji_name=banji.getBanji_name();System.out.println('stu_id='+stu_id);System.out.println('banji_name='+banji_name);return 'success';}}

復雜數據綁定

復雜的數據綁定問題,比如數組的綁定、集合的綁定

綁定數組

CourseController.java:

package com.ssm.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class CourseController {@RequestMapping('/toCourse')public String toCourse(){return 'course';}@RequestMapping('/deleteCourse')public String deleteCourse(Integer[] ids){if(ids!=null){//使用輸出語句模擬已經刪除的課程for(Integer id:ids){System.out.println('刪除了id為'+id+'的課程');}}else{System.out.println('ids=null');}return 'success';}}

綁定集合

在項目中,前端請求傳遞過來的數據可能就會批量包含各種類型的數據,如 Integer、String等。這種情況使用數組綁定是無法實現的。針對這種情況,可以使用集合數據綁定,即在包裝類中定義一個包含對象類的集合,然后在接收方法中將參數類型定義為該包裝類的集合。

UserController.java:

//向用戶批量修改頁面跳轉@RequestMapping('/toUserEdit')public String toUserEdit() {return 'user_edit';}//接收批量修改用戶的方法@RequestMapping('/editUsers')public String editUsers(UserVo userList){//將所有用戶數據封裝到集合中List<User> users=userList.getUsers();for(User user:users){if(user.getId()!=null){System.out.println('刪除了id為'+user.getId()+'的用戶名為'+user.getUsername());}}return 'success';}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 美名宝起名网-在线宝宝、公司、起名平台 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 脑钠肽-白介素4|白介素8试剂盒-研域(上海)化学试剂有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 酒万铺-酒水招商-酒水代理 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 |