springmvc在controller和視圖之間傳遞參數


?

從視圖向controller傳遞值, ?controller <--- 視圖

?
1)簡單類型,如int, String, 應在變量名前加@RequestParam注解,

例如:

 @RequestMapping("hello3")public String hello3( @RequestParam("name" ) String name,@RequestParam("hobby" ) String hobby){System. out.println("name=" +name);System. out.println("hobby=" +hobby);      return "hello" ;}

但這樣就要求輸入里面必須有這兩個參數了,可以用required=false來取消,例如:

@RequestParam(value="name",required=false) String name


但經測試也可以完全不寫這些注解,即方法的參數寫String name,效果與上面相同。
?

2)對象類型:

       @RequestMapping("/hello4" )public String hello4(User user){System.out.println("user.getName()=" +user.getName());System.out.println("user.getHobby()=" +user.getHobby());return "hello";}

?
Spring MVC會按:
? ? ?“HTTP請求參數名= ?命令/表單對象的屬性名”
? ? 的規則自動綁定請求數據,支持“級聯屬性名”,自動進行基本類型數據轉換。
?
即有一個User類,如下
package model;public class User {private String name ;private String hobby ;public User(){}public User(String name, String hobby) {this.name = name;this.hobby = hobby;}
//...get/set方法略 


?
則頁面上可以用


<form name="form1" action="hello4" method="post"><input type="text" name="name"/><input type="text" name="hobby"/>
...


提交后,把值直接綁定到user對象上。
?

此外,還可以限定提交方法為POST,即修改方法的@RequestMapping注解為


@RequestMapping(value="/hello4",method=RequestMethod.POST)

?


最后,注意,如果這里提交過來的字符出現亂碼,應該在web.xml里加入如下filter:
?
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class><init-param><param-name>encoding</param-name><param-value>utf8</param-value></init-param>
</filter><filter-mapping><filter-name>encodingFilter</filter-name ><url-pattern>/*</url-pattern>
</filter-mapping>


-----------------------以下轉載-----------

1,使用HttpServletRequest獲取

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?String?login(HttpServletRequest?request){??
  3. ????String?name?=?request.getParameter("name")??
  4. ????String?pass?=?request.getParameter("pass")??
  5. }??

?2,Spring會自動將表單參數注入到方法參數,和表單的name屬性保持一致。和Struts2一樣

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?String?login(HttpServletRequest?request,??
  3. ????????????????????????????????String?name,??
  4. ?@RequestParam("pass")String?password)?//?表單屬性是pass,用變量password接收??
  5. {??
  6. ???syso(name);??
  7. ???syso(password)??
  8. }??

?

3,自動注入Bean屬性

??

Java代碼??收藏代碼
  1. <form?action="login.do">??
  2. 用戶名:<input?name="name"/>??
  3. 密碼:<input?name="pass"/>??
  4. <input?type="submit"?value="登陸">??
  5. </form>??
  6. ??
  7. //封裝的User類??
  8. public?class?User{??
  9. ??private?String?name;??
  10. ??private?String?pass;??
  11. }??

?

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?String?login(User?user)??
  3. {??
  4. ???syso(user.getName());??
  5. ???syso(user.getPass());??
  6. }??

?

向頁面傳值:

當Controller組件處理后,向jsp頁面傳值,

1,使用HttpServletRequest 和 Session ?然后setAttribute(),就和Servlet中一樣

2,使用ModelAndView對象

3,使用ModelMap對象

4,使用@ModelAttribute注解

?

Model數據會利用HttpServletRequest的Attribute傳值到success.jsp中

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?ModelAndView??login(String?name,String?pass){??
  3. ????User?user?=?userService.login(name,pwd);??
  4. ????Map<String,Object>?data?=?new?HashMap<String,Object>();??
  5. ????data.put("user",user);??
  6. ????return?new?ModelAndView("success",data);??
  7. }??

?

使用ModelMap參數對象示例:

ModelMap數據會利用HttpServletRequest的Attribute傳值到success.jsp中

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public String?login(String?name,String?pass?,ModelMap?model){??
  3. ????User?user??=?userService.login(name,pwd);??
  4. ????model.addAttribute("user",user);??
  5. ????model.put("name",name);??
  6. ????return?"success";??
  7. }??

?

?使用@ModelAttribute示例

在Controller方法的參數部分或Bean屬性方法上使用

@ModelAttribute數據會利用HttpServletRequest的Attribute傳值到success.jsp中

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?String?login(@ModelAttribute("user")?User?user){??
  3. ????//TODO??
  4. ???return?"success";??
  5. }??
  6. ??
  7. @ModelAttribute("name")??
  8. public?String?getName(){??
  9. ????return?name;??
  10. }??

?

Session存儲:

可以利用HttpServletReequest的getSession()方法

Java代碼??收藏代碼
  1. @RequestMapping("/login.do")??
  2. public?String?login(String?name,String?pwd??
  3. ????????????????????????????ModelMap?model,HttpServletRequest?request){??
  4. ?????User?user?=?serService.login(name,pwd);??
  5. ?????HttpSession?session?=?request.getSession();??
  6. ?????session.setAttribute("user",user);??
  7. ?????model.addAttribute("user",user);??
  8. ?????return?"success";??
  9. }??

?

Spring MVC 默認采用的是轉發來定位視圖,如果要使用重定向,可以如下操作

1,使用RedirectView

2,使用redirect:前綴

Java代碼??收藏代碼
  1. public?ModelAndView?login(){??
  2. ???RedirectView?view?=?new?RedirectView("regirst.do");??
  3. ???return?new?ModelAndView(view);??
  4. }??

? ?或者用如下方法,工作中常用的方法:

Java代碼??收藏代碼
  1. public?String?login(){??
  2. ????//TODO??
  3. ????return?"redirect:regirst.do";??
  4. }??

?



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539439.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539439.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539439.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘋果手機怎么清理聽筒灰塵_怎么清理手機聽筒的灰塵?

作為一個專業的強迫癥從業者&#xff0c;我已經看不慣手機聽筒的灰塵很久了&#xff0c;在經歷無數次失敗之后&#xff08;針&#xff0c;牙刷&#xff0c;牙簽&#xff0c;吸塵器等等&#xff09;。我必須要來分享一個超級實用的方法清理手機聽筒的灰塵。那就是&#xff0c;起…

linux mrtg 命令,linux服務器之流量監控(MRTG)

本系列文章原則&#xff1a;灰常詳細&#xff0c;灰常簡單&#xff0c;新手包學包會&#xff01;因其簡單&#xff0c;故未涉及安全性方面的考慮呵&#xff01;本實驗服務器為rhel-5-server-i386&#xff0c;客戶端為windows xp。本實驗所用軟件包均在rhel-5-server-i386-dvd.i…

搭建網站必不可少的知識14

安全組配置 “操作”-“安全組配置” 單擊“內網入方向”&#xff0c;“添加安全組規則”默認配置即可“確定”。在公網入方向和公網出方向都這樣添加上。&#xff08;如果存在就先刪除后在添加&#xff09;。現在應該能登錄了。 輸入密碼&#xff0c;點擊“確定” 登錄后只有一…

8代cpu能跑linux,Intel公布6/7/8代桌面CPU打漏洞補丁性能結果:影響很小

今天&#xff0c;Intel執行副總裁數據、數據中心事業部總經理Navin Shenoy(孫納頤)發布了第二篇性能測試文章&#xff0c;針對客戶端也就是桌面平臺用戶在打上修復“Spectre”和“Meltdown”漏洞補丁之后的實際情況。對于大部分普通電腦用戶來說&#xff0c;性能的影響并不顯著…

Spring mvc interceptor配置攔截器

原文&#xff1a;http://blog.csdn.net/liyisong2008/article/details/42915715 -------------------------------------------------------------------------- xml代碼&#xff1a; [java] view plaincopy <?xml version"1.0" encoding"UTF-8"?>…

rm: 無法刪除swap: 不允許的操作_safe-rm老板再也不用擔心我刪庫跑路啦[視頻]

saferm 老板再不怕我刪庫跑路https://www.zhihu.com/video/1177717527541731328在 linux 上&#xff0c;使用 rm 是一件非常危險的事情(最近又有朋友遇到了我才想起了寫這篇文章)&#xff0c;如果不幸手殘執行了 rm -rf 刪除了重要文件&#xff0c;建議你準備收拾包袱跑路吧。既…

視頻通信基礎知識之采集

在之前的文章里&#xff0c;我們說了不少關于音視頻相關的內容&#xff0c;但是一直沒有系統的來介紹視頻通信&#xff0c;接下來我們將出一個系列關于視頻通信的文章。幫助大家對視頻通信有一個更全面的認識。系列文大綱如下&#xff1a;視頻通信采集視頻通信處理視頻通信編碼…

Spring MVC 流程圖

Spring工作流程描述1. 用戶向服務器發送請求&#xff0c;請求被Spring 前端控制Servelt DispatcherServlet捕獲&#xff1b;2. DispatcherServlet對請求URL進行解析&#xff0c;得到請求資源標識符&#xff08;URI&#xff09;。然后根據該URI&#xff0c;調用HandlerMapping獲…

kafka maven沒有下載_Kafka 系列(三)——Kafka 生產者詳解

首先介紹一下 Kafka 生產者發送消息的過程&#xff1a;Kafka 會將發送消息包裝為 ProducerRecord 對象&#xff0c; ProducerRecord 對象包含了目標主題和要發送的內容&#xff0c;同時還可以指定鍵和分區。在發送 ProducerRecord 對象前&#xff0c;生產者會先把鍵和值對象序列…

linux 硬盤繁忙,icinga2 借助check_iostat.sh抓取linux服務器的diskIO(硬盤繁忙度)

icinga2 借助check_iostat.sh抓取linux服務器的diskIO(硬盤繁忙度)下載地址&#xff1a;https://exchange.nagios.org/directory/Plugins/Operating-Systems/Linux/Check-Iostat-Updated/details對腳本進行修改(默認為$12&#xff0c;12為w_await值&#xff0c;14為%util值)UTI…

centos7安裝kubernetes1.9集群

節點規劃 本次選用一個master節點&#xff0c;三個node節點來安裝k8s集群。   節點IPM010.xx.xx.xxN010.xx.xx.xxN110.xx.xx.xxN210.xx.xx.xx集群啟動前的準備(請用root用戶執行) 節點準備工作(在每臺機器上執行) 包括修改主機名&#xff0c;關閉防火墻等操作。  k8s集群會…

oracle中查詢某張表的大小

select sum(bytes)/1024/1024 "表大小(M)" from user_segments where segment_nametable_name;--注&#xff0c;僅表數據的大小&#xff0c;不含索引、分區、LOB類型 select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name having Segm…

python圖像分割算法_OpenCV-Python 圖像分割與Watershed算法 | 三十四

目標 在本章中&#xff0c; 我們將學習使用分水嶺算法實現基于標記的圖像分割 我們將看到&#xff1a;cv.watershed() 理論 任何灰度圖像都可以看作是一個地形表面&#xff0c;其中高強度表示山峰&#xff0c;低強度表示山谷。你開始用不同顏色的水(標簽)填充每個孤立的山谷(局…

linux dns 問題嗎,Linux下DNS的問題

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓Nov 9 06:36:22 BJ-linux kernel: end_request: I/O error, dev fd0, sector 0Nov 9 06:36:22 BJ-linux kernel: end_request: I/O error, dev fd0, sector 0Nov 9 06:37:06 BJ-linux system-config-network[4031]: - //etc/…

NEO從源碼分析看共識協議

2019獨角獸企業重金招聘Python工程師標準>>> 0x00 概論 不同于比特幣使用的工作量證明&#xff08;PoW&#xff09;來實現共識&#xff0c;NEO提出了DBFT共識算法。DBFT改良自股權證明算法&#xff08;PoS&#xff09;&#xff0c;我沒有具體分析過PoS的源碼&#x…

oracle實現id自增和設置主鍵

1、關于主鍵&#xff1a;在建表時指定primary key字句即可&#xff1a; create table test( id number(6) primary key, name varchar2(30) ); 如果是對于已經建好的表&#xff0c;想增加主鍵約束&#xff0c;則類似語法&#xff1a; alter table test add constraint p…

python scrapy框架基如何實現多線程_Python實現在線程里運行scrapy的方法

本文實例講述了Python實現在線程里運行scrapy的方法。分享給大家供大家參考。具體如下&#xff1a; 如果你希望在一個寫好的程序里調用scrapy&#xff0c;就可以通過下面的代碼&#xff0c;讓scrapy運行在一個線程里。 """ Code to run Scrapy crawler in a thr…

怎樣在linux系統上安裝r,Linux系統之路——如何在CentOS7.2安裝R(示例代碼)

使用ubuntu的小伙伴們直接使用命令sudo apt-get installr-base-dev或者r-base搞定。然而對于使用centos的我卻一直卡在安裝這一步&#xff0c;十分的悲催&#xff0c;只有羨慕的份&#xff0c;但也不至于在linux上使用不上R。辦法還是有的&#xff0c;自己總結出兩種方法&#…

自定義實現棧的功能

棧的定義&#xff1a;棧是一個數據集合&#xff0c;我們可以吧它理解為是一個只能在一端進行插入或者刪除的列表。棧的特點&#xff1a;先進后出 Stack() 建立一個空的棧對象push() 吧一個元素添加到棧的最頂層pop() 刪除棧最頂層的元素&#xff0c;并返回這個元素gettop() 取棧…

mybatis循環map的一些技巧

<foreach>標簽的用法&#xff1a; 六個參數&#xff1a; collection&#xff1a;要循環的集合 index&#xff1a;循環索引&#xff08;不知道啥用。。&#xff09; item&#xff1a;集合中的一個元素&#xff08;item和collection&#xff0c;按foreach循環理解&#xff…