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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

springmvc在controller和视图之间传递参数

發布時間:2025/3/11 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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代碼??
  • @RequestMapping("/login.do")??
  • public?String?login(HttpServletRequest?request){??
  • ????String?name?=?request.getParameter("name")??
  • ????String?pass?=?request.getParameter("pass")??
  • }??
  • ?2,Spring會自動將表單參數注入到方法參數,和表單的name屬性保持一致。和Struts2一樣

    Java代碼??
  • @RequestMapping("/login.do")??
  • public?String?login(HttpServletRequest?request,??
  • ????????????????????????????????String?name,??
  • ?@RequestParam("pass")String?password)?//?表單屬性是pass,用變量password接收??
  • {??
  • ???syso(name);??
  • ???syso(password)??
  • }??
  • ?

    3,自動注入Bean屬性

    ??

    Java代碼??
  • <form?action="login.do">??
  • 用戶名:<input?name="name"/>??
  • 密碼:<input?name="pass"/>??
  • <input?type="submit"?value="登陸">??
  • </form>??
  • ??
  • //封裝的User類??
  • public?class?User{??
  • ??private?String?name;??
  • ??private?String?pass;??
  • }??
  • ?

    Java代碼??
  • @RequestMapping("/login.do")??
  • public?String?login(User?user)??
  • {??
  • ???syso(user.getName());??
  • ???syso(user.getPass());??
  • }??
  • ?

    向頁面傳值:

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

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

    2,使用ModelAndView對象

    3,使用ModelMap對象

    4,使用@ModelAttribute注解

    ?

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

    Java代碼??
  • @RequestMapping("/login.do")??
  • public?ModelAndView??login(String?name,String?pass){??
  • ????User?user?=?userService.login(name,pwd);??
  • ????Map<String,Object>?data?=?new?HashMap<String,Object>();??
  • ????data.put("user",user);??
  • ????return?new?ModelAndView("success",data);??
  • }??
  • ?

    使用ModelMap參數對象示例:

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

    Java代碼??
  • @RequestMapping("/login.do")??
  • public String?login(String?name,String?pass?,ModelMap?model){??
  • ????User?user??=?userService.login(name,pwd);??
  • ????model.addAttribute("user",user);??
  • ????model.put("name",name);??
  • ????return?"success";??
  • }??
  • ?

    ?使用@ModelAttribute示例

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

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

    Java代碼??
  • @RequestMapping("/login.do")??
  • public?String?login(@ModelAttribute("user")?User?user){??
  • ????//TODO??
  • ???return?"success";??
  • }??
  • ??
  • @ModelAttribute("name")??
  • public?String?getName(){??
  • ????return?name;??
  • }??
  • ?

    Session存儲:

    可以利用HttpServletReequest的getSession()方法

    Java代碼??
  • @RequestMapping("/login.do")??
  • public?String?login(String?name,String?pwd??
  • ????????????????????????????ModelMap?model,HttpServletRequest?request){??
  • ?????User?user?=?serService.login(name,pwd);??
  • ?????HttpSession?session?=?request.getSession();??
  • ?????session.setAttribute("user",user);??
  • ?????model.addAttribute("user",user);??
  • ?????return?"success";??
  • }??
  • ?

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

    1,使用RedirectView

    2,使用redirect:前綴

    Java代碼??
  • public?ModelAndView?login(){??
  • ???RedirectView?view?=?new?RedirectView("regirst.do");??
  • ???return?new?ModelAndView(view);??
  • }??
  • ? ?或者用如下方法,工作中常用的方法:

    Java代碼??
  • public?String?login(){??
  • ????//TODO??
  • ????return?"redirect:regirst.do";??
  • }??
  • ?



    總結

    以上是生活随笔為你收集整理的springmvc在controller和视图之间传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。

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