@RequestParam
@RequestParam 用来请求request中的参数,相当于request.getParameter() 其中有三个属性:
1、value用来指定要取得参数的key
2、required 所取的参数是否必须存在,如果true表示必须存在,若不存在则抛出异常
3、default 指定该value的默认值
类实现代码:
@RequestMapping("/requestParam")
public String requestParam(
@RequestParam(value = "id", required = false) Integer id) {
System.out.println("the id is:" + id);
return SUCCESS;
}
测试请求代码
<a href="paramSelect/requestParam?id=10">RequestParam 测试</a>
@RequestHeader
用来获取request头中的信息,其中参数的使用方法同@RequestParam
类实现代码
@RequestMapping("/requestHeader")
public String requestHeader(
@RequestHeader(value = "User-Agent", required = true, defaultValue = "") String ua) {
System.out.println("the User-Agent is:" + ua);
return SUCCESS;
}
测试请求代码
<a href="paramSelect/requestHeader">RequestHeader 测试</a>
@RequestMapping
用来获取cookie中的参数,属性使用同@RequestParma
类实现代码:
@RequestMapping("/cookieValue")
public String cookieValue(@CookieValue(value = "JSESSIONID") String jid) {
System.out.println("JSESSIONID is:" + jid);
return SUCCESS;
}
测试请求代码:
<a href="paramSelect/cookieValue">CookieValue 测试</a>
获取javabean类型的参数(自动把参数封装成javabean)
1、可以把一个javabean当作请求参数传入,要求表单中的属性名称与javabean中的成员变量能一一对应,则springmvc会自动匹配
2、传入参数可以级联,如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 中类型参数
在请求参数中可以放入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>