先說說頁面往后臺傳值的方法壳咕,歡迎補充:
一席揽、form表單提交(常用)
二、JQuery中的ajax提交(常用)
三谓厘、通過url字符串拼接向后臺提交數據
再來說說后臺獲取值的常用方法:
任意一種方法
<form action="login">
帳號:<input type="text" name="loginName" > <br/>
密碼:<input type="text" name="password" > <br/>
<input type="submit" value="登錄">
</form>
方法1:參數直接獲取
ps: 函數參數名與請求參數名保持一致幌羞。
@RequestMapping("/login")
public String login(String loginName,String password){
System.out.println("方法1:參數直接獲取");
System.out.println("loginName:"+loginName);
System.out.println("password:"+password);
return "loginSuccess";
}
方法2:對象獲取
ps:建立一個對象,屬性名對應請求參數名保持一致竟稳,并生成相應的getter()和setter()方法属桦。
建立對象User:
package com.test.pojo;
public class User {
private String loginName;
private String password;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
開始接收:
@RequestMapping("/login")
public String login(User u){
System.out.println("方法2:對象獲取");
System.out.println("loginName:"+u.getLoginName());
System.out.println("password:"+u.getPassword());
return "loginSuccess";
}
方法3:@RequestParam參數綁定獲取
ps:方法1的變種熊痴,但該接收參數名可以隨意,通過注解@RequestParam指明即可聂宾。
請求URL為:
http://localhost:8080/springmvc/hello/100?loginName=wangwu&password=123456
對于上面這個url,controller里面可以這么寫:
@RequestMapping("/login")
public String login(@RequestParam("loginName") String name,@RequestParam("password") String pwd){
System.out.println("方法3:參數綁定獲取");
System.out.println("loginName:"+name);
System.out.println("password:"+pwd);
return "loginSuccess";
}
方法4:@PathVariable獲取請求路徑中的參數
這個注解能夠識別URL里面的槽位愁拭,如下面的{id},我們看下面的一個URL
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
對于上面的一個url可以這樣寫:
@RequestMapping("/hello/{id}")
public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String age,
@RequestParam(value="param2", required=false) String count){
.......
}
向前臺傳值(除了使用ModelAndView方式外亏吝,可以在聲明方法的時候聲明也可以在代碼中聲明岭埠。還可以使用Map、Model和ModelMap的方式蔚鸥,必須在方法中聲明)惜论,如下ModelAndView可行,Map不行:
public String showdXxnr(String tsxxmx) {
// ModelAndView model=new ModelAndView();
// model.addObject("name", "李四");
// model.setViewName("/xxts/xxnr");
Map<String, Object> map=new HashMap<String, Object>();
······
}
使用Map止喷、Model和ModelMap的方式
@RequestMapping("/test")
public String test(Map<String,Object> map,Model model,ModelMap modelMap,HttpServletRequest request){
//1.放在map里
map.put("names", Arrays.asList("cai","zhi","ci"));
//2.放在model里 建議使用
model.addAttribute("time", new Date());
//3.放在request里
request.setAttribute("request", "requestValue");
//4.放在modelMap中
modelMap.addAttribute("city", "ChengDu");
modelMap.put("gender", "male");
return "hello";
}
JSP寫法:
使用EL表達式
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
time:${requestScope.time}
names:${requestScope.names }
city:${requestScope.city }
gender:${requestScope.gender }
request:${requestScope.request}