springmvc 傳值,有5種方法,(這篇文章為轉載),
1.request獲取值:
@RequestMapping("/request.action") public String request(HttpServletRequest request){ String value= (String) request.getAttribute("value"); String val=request.getParameter("value"); return "index"; }
request的getAttribute和getParameter有什么區別呢?
getAttribute:取得是setAttribute設定的值,session范圍的值,可以設置為object,對象,字符串;getAttribute獲取的值是web容器內部的,是具有轉發關系的web組件之間共享的值;用於服務端重定向
getParameter:取得是從web的form表單的post/get,或者url傳過來的值,只能是String字符串;getParameter獲取的值是web端傳到服務端的,是獲取http提交過來的數據;用於客戶端重定向。
2.使用路徑變量@PathVariable綁定頁面url路徑的參數,用於進行頁面跳轉
@Controller public class BaseController { @RequestMapping("/goUrl/{folder}/{file}") public String goUrl(@PathVariable String folder,@PathVariable String file){ return folder+"/"+file; } }
3.通過@RequestParam綁定頁面傳來的參數,效果跟
String id=request.getParameter(“id”)是一樣的:
@RequestMapping("/test.action") public void test(@RequestParam("id") String id){ System.out.println("id:"+id); }
4.自動注入,實體類屬性有setter,getter方法,前端form表單的name對應實體的屬性名,后台直接可以通過該實體類自動把參數綁定到類的屬性。
比如:實體類
public class Content { private String content;
public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
form表單:
<form action="<%=request.getContextPath()%>/content" method="post" enctype="multipart/form-data">
商品描述:<textarea name="content" rows="2" cols="20"></textarea><br>
<input type="submit" value="提交"/>
</form>
后台接收數據:
@RequestMapping("/content") public void contetn(Content content){ System.out.println("content:"+content.getContent()); }
5.使用RequestBody接受前端傳來的json數組,對象。ResponseBody把數據返回
@RequestMapping("/test.action") @ResponseBody public void test(@RequestBody List<Content> list){ for (Content content:list){ System.out.println(content.toString()); } }