只需要在Controller的目标方法中, 直接写上HttpServletRequest对象即可获取 原生API的 request对象实例。
@RequestMapping(value = "/p1")
public String param1(HttpServletRequest request){
System.out.println(" httpServletRequest对象 : " + request);
System.out.println("获取请求的参数: " + request.getParameter("username"));
System.out.println("获取工程路径: " + request.getContextPath());
System.out.println("获取请求资源路径: " + request.getRequestURI());
return "ok";
}
@RequestMapping(value = "/p2")
public String param2(HttpSession session , HttpServletResponse response){
System.out.println(" 会话id: " + session.getId());
System.out.println(" 是否是新创建的: " + session.isNew() );
System.out.println( "response对象" + response );
return "ok";
}
以上这几个原生API 只需要在Controller 控制器的方法上直接写参数就可以获取,使用跟原来一样.
/**
* 在SpringMVC框架中,如果要获取请求的参数,只需要把参数直接写在Controller的方法上即可.
* 注意点:
* 1 参数的类型要一致
* 2 参数名要一致!
*/
@RequestMapping(value = "/p3")
public String param3(String username,Integer age,String password){
System.out.println("请求参数 username 的值是: " + username);
System.out.println("年龄 : " + age);
System.out.println("密码 : " + password);
return "ok";
}
/**
* 如果要使用SpringMVC获取多个参数值的时候,只需要直接写成数组即可!!!
* 注意点:
* 1 参数的类型要一致
* 2 参数名要一致!
*/
@RequestMapping(value = "/p4")
public String param4(String[] hobby){
System.out.println("兴趣爱好: " + Arrays.asList(hobby));
System.out.println("爱好1 : " + hobby[0]);
System.out.println("爱好2 : " + hobby[1]);
return "ok";
}
示例代码:
/**
* 客户端的参数名是username, 服务器参数名是user. 是否可以取值.
* @RequestParam(name = "username") String user
* 表示把请求参数 username 的值,赋给方法参数 user
*
* 如果没有传递就会报错.
* required = false 表示客户端不传递不报错.值为null
* defaultValue 表示默认值
* @param user
* @return
*/
@RequestMapping(value = "/p5")
public String param5(@RequestParam(name = "username",required = false,defaultValue = "哟!!") String user){
System.out.println("user的值是: " + user);
return "ok";
}
如果指定的参数客户端 不传递 , 就会报以下错误。
@RequestParam注解是获取指定请求参数的值注入到Controller方法参数中
@ReqeustHeader 注解是将指定请求头的值注入到Controller方法参数中
@RequestParam和@ReqeustHeader 注解的使用规则一样
@RequestMapping(value = "/p6")
public String param6(@RequestHeader(name="User-Agent") String userAgent
,@RequestHeader(name="Connection")String connection ){
System.out.println("请求头 userAgent 的值是: " + userAgent);
System.out.println("请求头 connection 的值是: " + connection);
return "ok";
}
@CookieValue注解和@RequestParam注解和@ReqeustHeader 注解使用规则完全一样.
把请求的Cookie的值注入到Controller方法参数中
@RequestMapping(value = "/p7")
public String param7(@CookieValue(name = "JSESSIONID") String jSessionId){
System.out.println("Cookie jSessionId 的值是: " + jSessionId);
return "ok";
}
@CookieValue注解:获取Cookie值注入方法参数
@RequestParam注解:获取客户端参数值注入方法参数
@ReqeustHeader 注解 :获取请求头注入方法参数
只需要注意请求的参数名要和JavaBean的属性名一致即可
<%--
斜杠表示绝对路径.
如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>
如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">
编号: <input id="id" name="id" /> <br>
名称: <input id="name" name="name" /> <br>
年龄: <input id="age" name="age" /> <br>
电话: <input id="phone" name="phone" /> <br>
<input type="submit" value="提交" />
</form>
public class Person {
private Integer id;
private String name;
private Integer age;
private String phone;
}
/**
* 请求的参数名要和javaBean的属性名一致!!!
*/
@RequestMapping(value = "/addperson")
public String person(Person person){
System.out.println("用户信息保存 ==>>> " + person);
return "ok";
}
<%--
斜杠表示绝对路径.
如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>
如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">
编号: <input id="id" name="id" /> <br>
名称: <input id="name" name="name" /> <br>
年龄: <input id="age" name="age" /> <br>
电话: <input id="phone" name="phone" /> <br>
<%--
使用级联属性赋值
--%>
车名: <input id="car.name" name="car.name" /> <br>
车牌: <input id="car.carNo" name="car.carNo" /> <br>
<input type="submit" value="提交" />
</form>
public class Car {
private String name;
private String carNo;
}
public class Person {
private Integer id;
private String name;
private Integer age;
private String phone;
private Car car;
}