日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

springMVC---处理模型数据方法 *

發布時間:2024/4/13 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springMVC---处理模型数据方法 * 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

承接一二章

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello World</title> <a href="springMVC/ModelAndView">ModelAndView</a><br> <br><a href="springMVC/Map">map</a><br> <br><!-- 模型修改操作1, 原始數據為 1 tom 1234562, 密碼不能別修改3,表單回顯,模擬操作直接在表單填寫對應的屬性值--> <form action="springMVC/testModelAttribute" method="get"><input type="hidden" name="id" value="1"/><br>name<input type="text" name="username" value="tom"/> <br><!-- pw<input type="text" name="password" value="123456"/> --><input type="submit" value="submit" /> </form> <br> <br> <form action="springMVC1/testModelAttribute" method="get"><input type="hidden" name="id" value="1"/><br>name<input type="text" name="username" value="tom"/> <br><!-- pw<input type="text" name="password" value="123456"/> --><input type="submit" value="submit" /> </form> </body> </html>

test.java

package com.hdxy.domian;import java.util.Arrays; import java.util.Date; import java.util.Map;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;import com.hdxy.pojo.User;@RequestMapping("springMVC") @Controller public class Test {/*處理模型數據方法:* @1 ModelAndView(可以包含視圖和模型信息)* 處理方法返回值類型為ModelAndView時:方法體即可通過該對象添加模型數據* @2Map 及 Model* 入參為:org.springframework.ui.Model,org.springframework.ui.ModelMap* 或者java.ui.Map時處理方法返回時,Map中的數據會自動添加到模型中。* @3 SessionAttributes:* 將模型中的某個屬性暫存在HttpSession中以便多個請求之間可以共享這個參數* @4 ModelAttribute: * 方法入參標注該注解后,入參的對象就會放入到數據模型中* SpringMVC確定目標方法POJO類型入參的過程:* 1.確定一個Key* 1)。若目標方法的POJO類型的參數沒有使用@ModeleAttriBute 作為修飾 則key額為POJO類名第一個字母小寫* 2)。若使用了@MOdelAttribute來修飾,則key為@ModeleAttriBute注解的value屬性值* 2.在implicitModel中查找key對應的對象,若存在,則作為入參傳入* 1)。若在@ModelAttribute標記的方法中在Map中保存過,且key和1確定的key一至,則獲取到* 3.若implicitModel中不存在key對應的對象,則檢查當前handler是佛使用sessionAttrbute注解修飾* 若使用了該注解,則@sessionAttributes注解的value屬性值中包含了key,則會從Httpsession中來獲取key* 所對應額value值,若存在則直接傳入目標參數方法中,若不存在則拋出異常* 4.若handler沒有標識@sessionAttributes注解或@sessionAttributes注解的value值中不包含key,則* 會通過反射來創建pojo類型的參數,傳入目標方法的參數* 5.SpringMVC會把key和value保存到implicitModel中,進而會保存到request中* * */final public String SUCCESS="loginSuccess";@RequestMapping(value="/ModelAndView")public ModelAndView TestModelAndView(){String viewName= SUCCESS;ModelAndView modelv=new ModelAndView(viewName);modelv.addObject("time",new Date());return modelv;}@RequestMapping("/Map")public String TestMap(Map<String,Object> map){/*System.out.println(map.getClass().getName());//測試ModelMap*/map.put("names", Arrays.asList("tom","jerry","2"));return SUCCESS;}@RequestMapping("/testModelAttribute")public String testModelAttribute(User user){//此方法從新new了一個User類 去賦修改后的值 得到的密碼為空。(無法滿足不修改密碼的需求)//(test2.java)而ModelAttribute是從數據庫獲取User類(把修改的屬性賦值,無修改的顯示原先值) 然后賦值System.out.println("修改"+user);return SUCCESS;} }

test2.java

package com.hdxy.domian;import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam;import com.hdxy.pojo.User;@RequestMapping("/springMVC1") @Controller public class Test2 {final public String SUCCESS="loginSuccess";@ModelAttributepublic void getUser(@RequestParam(value="id",required=false)Integer id,Map<String,Object> map){if(id !=null){//模擬從數據庫中獲取對象User user=new User();user.setId(1);user.setUsername("tom");user.setPassword("123456");System.out.println("從數據庫中獲取user"+user);/*map.put("adc", user);*/map.put("user", user);}} /*** 運行流程* 1.執行:@ModelAttribute注解修飾的方法:從數據庫中取出對象,放入到Map中 鍵值為: user* 2.springMVC從Map中取出user對象,并把表單的請求參數賦值給user對象對應屬性* 3.SpringMVc把上述對象傳入目標方法的參數中* * 注: 在@ModelAttribute注解修飾的方法中,(只能修飾類)* 放入到Map時的鍵值 需要和 目標方法入參類型的第一個字母小寫的字符串一致* * Parma("abc")User user* */@RequestMapping("/testModelAttribute")public String testModelAttribute(User user){System.out.println("測試SpringMVC1");System.out.println("修改"+user);return SUCCESS;}/***源碼分析:*1.調用@ModelAttribute注解修飾的方法,實際上把ModelAttribute方法中的Map中的數據放在implicitModel中*2.解析請求處理器的目標參數來自于webDataBinder 對象的target屬性*1).創建webdatabinder對象:*--確定ObjectName屬性(若傳入的attrname屬性值為:“”,則objectName為類名的第一個字母小寫)。*注意:attrName 若目標犯法的pojo屬性使用了ModelAttribute 來修飾,則attrname 值為ModelAttribute的value屬性值*---確定target屬性:* 在implicitModel中查找attrName對應的屬性值,如果存在,Ok * >若不存在:則驗證當前handel石佛使用了@sessionAttributes進行修飾,若使用了,則嘗試從session中獲取attrName所對應的屬性值* 若session沒有則拋出異常* >若handle沒有使用@sessionAttributes 進行修飾,或@sessionAttributtes中沒有使用value 值指定的key和attrName 相匹配,則通過反射創建POJO類* 2), SpringMVC把表單的請求賦給了webdataBinder的target對應的屬性* 3),springMVC會把webDataBinder的target和attrname給implicitModel* 4),把webDataBinder的target作為參數傳遞給目標方法的入參**/ }

?

轉載于:https://www.cnblogs.com/lnthz/p/8168834.html

總結

以上是生活随笔為你收集整理的springMVC---处理模型数据方法 *的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。