SpringMVC接受参数

1.使用原生的request接受参数

一个链接发送请求并附带参数:

<a href="${pageContext.request.contextPath}/first?id=1&name=itlike">请求1</a>

controller:

  @RequestMapping("/first")
    public String myform(HttpServletRequest request){
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        System.out.println(name);
        System.out.println(id);
        return "/second.jsp";
    }

2.@requestParam及用法

当请求的参数名称和处理器的形参名称一致时,会自动将参数绑定,并做类型转换

链接及参数:

<a href="${pageContext.request.contextPath}/second?id=1&name=itlike">请求2</a>

controller:


    @RequestMapping("/second")
    public String myform2(Integer id,String name){
        System.out.println(id+"   "+name);
        return "/second.jsp";
    }

当参数名可以不一致,可以使用requestParam()改变参数名称

controller:

 @RequestMapping("/second")
    public String myform2(@RequestParam(value = "id",required = false,defaultValue = "100") Integer ida, String name){
        System.out.println(ida+"   "+name);
        return "/second.jsp";
    }

required 表示该参数是否必须传递   默认值是true

defaulValue  设置默认值      当required是false时,没传值时该参数为设置的默认值       当required是true时,不传值也不会报错,使用默认值

3.JavaBean接受参数

要求表单当中的参数名和实体类中的属性字段保持一致 ,这样可自动将参数封装在对象中

链接表单:

 <form action="${pageContext.request.contextPath}/myform">
      user:<input type="text" name="user_name"><br/>
      age:<input type="text" name="user_age"><br/>
      <input type="submit" value="提交">
  </form>

实体类:

public class User {
    private String user_name;
    private String user_age;
}

controller:

 @RequestMapping("/myform")
    public String myform3(User user){
        System.out.println(user);
        return "second.jsp";
    }

4.使用数组接受参数

当链接中参数的属性名一样时,可使用数组接受参数      name相同的参数会放在一个数组里

链接表单:

<form action="${pageContext.request.contextPath}/myform1">
     user:<input type="text" name="name"><br/>
     age:<input type="text" name="name"><br/>
     <input type="submit" value="提交">
 </form>

controller:

 @RequestMapping("/myform1")
    public String myform4(String name[]){
        System.out.println(Arrays.toString(name));
        return "second.jsp";
    }

也可以在实体的属性字段定义数组,接受参数依然使用JavaBean的方法接受,数组便会被封装到对象里

链接表单:

<form action="${pageContext.request.contextPath}/myform1">
     user:<input type="text" name="user_name"><br/>
     age:<input type="text" name="user_age"><br/>
     hobby:<input type="checkbox" name="hooby" value="篮球">篮球
            <input type="checkbox" name="hooby" value="篮球">乒乓球
            <input type="checkbox" name="hooby" value="篮球">足球<br/>
     <input type="submit" value="提交">
 </form>

实体类:

public class User {
    private String user_name;
    private String user_age;
    private String hooby[];
}

controller:

@RequestMapping("/myform1")
    public String myform4(User user){
        System.out.println(user);
        return "second.jsp";
    }

5.包装类接受参数

定义两个实体类,一个User类   一个Dog类    Dog是User的一个属性

public class User {
    private String user_name;
    private String user_age;
    private String hooby[];
    private Dog dog;
}


public class Dog {
    private String name;
    private String color;
}

链接及参数设置:

<form action="${pageContext.request.contextPath}/myform2">
     user:<input type="text" name="user_name"><br/>
     age:<input type="text" name="user_age"><br/>
     hobby:<input type="checkbox" name="hooby" value="篮球">篮球
     <input type="checkbox" name="hooby" value="篮球">乒乓球
     <input type="checkbox" name="hooby" value="篮球">足球<br/>
     ------宠-----物-------<br/>
     宠物名称:<input type="text" name="dog.name"><br/>
     宠物颜色:<input type="text" name="dog.color"><br/>
     <input type="submit" value="提交">
 </form>

包装类的属性设置,是属性名.包装类的属性名

controller:

 @RequestMapping("/myform2")
    public String myform4(User user){
        System.out.println(user);
        return "second.jsp";
    }

6.List集合接受参数

需求:当一个User有多个狗时,可以在User中定义一个list<Dog>

实体类定义:

public class User {
    private String user_name;
    private String user_age;
    private String hooby[];
    private Dog dog;
    private List<Dog> dogs;
}

public class Dog {
    private String name;
    private String color;
}

表单及参数设置     着重对于list集合每个对象的参数设置

<form action="${pageContext.request.contextPath}/myform2">
     user:<input type="text" name="user_name"><br/>
     age:<input type="text" name="user_age"><br/>
     hobby:<input type="checkbox" name="hooby" value="篮球">篮球
     <input type="checkbox" name="hooby" value="篮球">乒乓球
     <input type="checkbox" name="hooby" value="篮球">足球<br/>
     ------宠-----物-------<br/>
                -------单个狗--------<br/>
     宠物名称:<input type="text" name="dog.name"><br/>
     宠物颜色:<input type="text" name="dog.color"><br/>
                -----集合狗——————<br/>
     宠物名称:<input type="text" name="dogs[0].name"><br/>
     宠物颜色:<input type="text" name="dogs[0].color"><br/>

     宠物名称:<input type="text" name="dogs[1].name"><br/>
     宠物颜色:<input type="text" name="dogs[1].color"><br/>
     <input type="submit" value="提交">
 </form>

controller:

@RequestMapping("/myform2")
    public String myform4(User user){
        System.out.println(user);
        return "second.jsp";
    }

猜你喜欢

转载自blog.csdn.net/weixin_43014205/article/details/85320892