@RequestParam 用來請求request中的參數,至關於request.getParameter() 其中有三個屬性:
一、value用來指定要取得參數的key
二、required 所取的參數是否必須存在,若是true表示必須存在,若不存在則拋出異常
三、default 指定該value的默認值java
類實現代碼:spring
@RequestMapping("/requestParam") public String requestParam( @RequestParam(value = "id", required = false) Integer id) { System.out.println("the id is:" + id); return SUCCESS; }
測試請求代碼api
<a href="paramSelect/requestParam?id=10">RequestParam 測試</a>
用來獲取request頭中的信息,其中參數的使用方法同@RequestParammarkdown
類實現代碼cookie
@RequestMapping("/requestHeader") public String requestHeader( @RequestHeader(value = "User-Agent", required = true, defaultValue = "") String ua) { System.out.println("the User-Agent is:" + ua); return SUCCESS; }
測試請求代碼mvc
<a href="paramSelect/requestHeader">RequestHeader 測試</a>
用來獲取cookie中的參數,屬性使用同@RequestParmaapp
類實現代碼:ide
@RequestMapping("/cookieValue") public String cookieValue(@CookieValue(value = "JSESSIONID") String jid) { System.out.println("JSESSIONID is:" + jid); return SUCCESS; }
測試請求代碼:post
<a href="paramSelect/cookieValue">CookieValue 測試</a>
一、能夠把一個javabean看成請求參數傳入,要求表單中的屬性名稱與javabean中的成員變量能一一對應,則springmvc會自動匹配測試
二、傳入參數能夠級聯,如User中有一個birthday變量爲Birthday類型,也可自動匹配
類實現代碼
@RequestMapping("/postBean") public String postBean(User user) { System.err.println(user); return SUCCESS; }
User類:
public class User { private String username; private String password; private Birthday birthday; public User() { } public User(String username, String password, Birthday birthday) { super(); this.username = username; this.password = password; this.birthday = birthday; } @Override public String toString() { return "User [username=" + username + ", password=" + password + ", birthday=" + birthday + "]"; } 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; } public Birthday getBirthday() { return birthday; } public void setBirthday(Birthday birthday) { this.birthday = birthday; } }
Birthday類
public class Birthday { private int month; private int year; public Birthday() { } public Birthday(int month, int year) { super(); this.month = month; this.year = year; } @Override public String toString() { return "Birthday [month=" + month + ", year=" + year + "]"; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } }
請求測試代碼:
<form action="paramSelect/postBean" method="post"> 用戶名:<input type="text" name="username"> <br> 密碼:<input type="password" name="password"> <br> 出生月:<input type="text" name="birthday.month"> <br> 出生年:<input type="text" name="birthday.year"> <br> <input type="submit" value="submit"> </form>
在請求參數中能夠放入servlet中的api,springmvc會自動適配並傳入對應參數
可獲取的類型包括以下:
• HttpServletRequest • HttpServletResponse • HttpSession • java.security.Principal • Locale • InputStream • OutputStream • Reader • Writer
類實現代碼
@RequestMapping("/servletTest") public void servletTest(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getWriter(); System.out.println("Test success"); out.println("Test success"); }
測試請求方法:
<a href="paramSelect/servletTest">Servlet API 測試</a>