http://localhost:8080/ProjectName/user/login.do
<formaction="<%=request.getContextPath()%>/user/login.do"method="post"> username:<inputtype="text"name="username"> <br> password:<inputtype="text"name="password"> <br> age:<inputtype="text"name="age"> <inputtype="submit"value="提交"> </form>
HttpServeletRequest
作为方法参数, spring
会自动为其注入 @RequestMapping(value="/login.do")
public String login(HttpServletRequest request,HttpServletResponse response){
String username=request.getParameter("username");
String password=request.getParameter("password");
int age=Integer.parseInt(request.getParameter("age")); //转换类型
System.out.println(username+"--->"+password);
return "success";
}
name
属性要和方法中的参数一致
@RequestMapping(value = "/login.do")
public String login(String username,String password,Integer age){
System.out.println(username + "--->" + password+"----->"+age);
return "success";
}
name
属性不一致 @RequestParam
这个获取的值必须包含在请求参数中,否则报错,除非设置 required
属性为 false
/**
* 使用@RequestParam获取请求参数
* @RequestParam()中的value属性为form表单中对应的name属性
* 自动转换数据类型,只需要定义方法参数为所需的数据类型即可,spring会为我们自动转换
*/
@RequestMapping(value = "/login.do")
public String login(@RequestParam(value ="username")String name,
@RequestParam("password") String pwd,@RequestParam("age") Integer age) {
System.out.println(name + "--->" + pwd+"----->"+age);
return "success";
}
value
指定请求中对应的属性名称,这个就像表单中定义的name属性
required
指定是否这个参数必须包含在请求地址中,默认是 true
,即是 如果不包含这个参数那么就会报错。
defaultValue
指定默认的值,如果设置了 required=false
,并且没有设置这个值,那么默认的是 null
,但是也是可以使用这个属性来设置参数默认的值。当然对于设置了int类型的参数,那么并没有指定其值,那么将会报错,因为 int
类型没有 null
,只有 Integer
类型的才有,因此需要设置成Integer
/*
* 这里的获取请求参数中的username,age的值
* 其中username的这个注解默认的是required=true,因此这个是不可以没有的
* age的这个注解设置了required=false,表示可以没有这个参数,但是如果没有这个参数,那么默认的是null,但是int类型的没有null,因此也会是报错的,有两种解决方式:
* 1) 通过defalutValue设置其默认的值
* 2) 如果我们就想要设其为null,可以使用封装类Integer类型即可
*/
@RequestMapping(value = "/testRequestParams")
public String testRequestParams(@RequestParam(value="username")String username,@RequestParam(value="age",required=false)int age) {
System.out.println("username,age "+ username+" , "+age);
return SUCCESS;
}
JavaBean
,那么我们直接传入一个JavaBean对象即可接收全部的请求参数。 set
方法,并且其中的变量名要和表单中的 name
属性一致 public class User{
private String username;
private String password;
private int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
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;
}
@Override
public String toString(){
return "User [username=" + username + ", password=" + password + "]";
}
}
UserController
中的 login
方法如下: @RequestMapping(value = "/login.do")
public String login(User user){
System.out.println(user);
return "success";
}
/**
* 混合使用案例
*/
@RequestMapping(value = "/login.do")
public String login(User user,@RequestParam("gender")String gender){
System.out.println(user);
return "success";
}
HttpServletRequest
方法获取,另外的方法都是非常好用的方法,根据实际情况进行选取即可