Spring MVC從頁面向Controller傳值的方式
驗證代碼:https://files.cnblogs.com/files/peiyangjun/20180104_springMVC_easyui.zip
從頁面向Controller 傳值的方式有很多,本文整理出常用的從頁面向Controller傳值的幾種方式:
1、通過HttpServletRequest 向后台傳遞數據
頁面程序如下:

<h2>利用HttpServletRequest傳數據</h2> <form action="loginToJson"> 用戶名:<input name="name" /> 密碼:<input name="pass" /> <input type="submit" value="登陸"> </form>
后台程序段如下:

@ResponseBody @RequestMapping(value="/loginToJson",method=RequestMethod.POST) public String loginToJson(HttpServletRequest request) { User user = new User(); user.setUserName(request.getParameter("name")); user.setPassword(request.getParameter("pass")); return JSON.toJSONString(user); }
2、通過參數向Controller傳遞值
前台程序如下:

<h2>利用函數參數傳數據</h2> <form action="loginByVariable" method="post"> 用戶名:<input name="name" /> 密碼:<input name="pass" /> <input type="submit" value="登陸"> </form>
后台程序如下:

@RequestMapping(value="/loginByVariable",method=RequestMethod.POST) public String loginToSession(HttpServletRequest request,ModelMap map,String name,String pass) { User user = new User(); user.setUserName(name); user.setPassword(pass); map.put("user", user); System.out.println(user); return "mySession"; }
注意:前台<input name="name" />中的name屬性的值,必須和后台函數參數中的String name中的形參名一致,否則從后台取不到值。
3、利用函數參數,對象傳遞值到Controller
前置條件,對象的定義代碼:
注意這里,User對象的屬性名為userName和password,並有getter和setter屬性

public class User{ @Override public String toString() { return "User [userName=" + userName + ", password=" + password + "]"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String userName; private String password; }
前台程序如下:
注意:userName和password必須和對象屬性名稱一致。

<h2>利用函數參數對象傳數據</h2> <form action="loginByObject" method="post"> 用戶名:<input name="userName" /> 密碼:<input name="password" /> <input type="submit" value="登陸"> </form>
后台程序如下:

@RequestMapping(value="/loginByObject",method=RequestMethod.POST) public String loginToSession(ModelMap map,User user) { User user1 = new User(); user1.setUserName(user.getUserName()); user1.setPassword(user.getPassword()); System.out.println(user1+" Object"); map.put("user", user1); return "mySession"; }
4、利用函數參數@RequestParam參數傳遞據
前台代碼如下:

<br> <h2>利用函數參數@RequestParam參數傳遞據</h2> <form action="loginByRequestParm" method="post"> 用戶名:<input name="name" /> 密碼:<input name="pass" /> <input type="submit" value="登陸"> </form>
后台程序如下:

@RequestMapping(value="/loginByRequestParm",method=RequestMethod.POST) public String loginToSessiona(HttpServletRequest request,ModelMap map, @RequestParam("name") String UserName,@RequestParam String pass) { User user = new User(); user.setUserName(UserName); user.setPassword(pass); map.put("user", user); System.out.println(user+"requestParam"); return "mySession"; }
注意:@RequestParam("name")中如果有參數,name必須為頁面中屬性的值,如果沒有參數,則參數名,必須和頁面中屬性的值相同,如頁面中pass,則在@RequestParam中,則可以不指定參數,但形參的名字必須為pass
5、 通過URL傳遞參數 @PathVariable
具體代碼如下:

@Controller public class TestController { @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) public String getLogin(@PathVariable("userId") String userId, @PathVariable("roleId") String roleId){ System.out.println("User Id : " + userId); System.out.println("Role Id : " + roleId); return "hello"; } @RequestMapping(value="/product/{productId}",method = RequestMethod.GET) public String getProduct(@PathVariable("productId") String productId){ System.out.println("Product Id : " + productId); return "hello"; } @RequestMapping(value="/javabeat/{regexp1:[a-z-]+}", method = RequestMethod.GET) public String getRegExp(@PathVariable("regexp1") String regexp1){ System.out.println("URI Part 1 : " + regexp1); return "hello"; } }