1. 程式人生 > >SpringMVC接受引數

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";
    }

[email protected]及用法

當請求的引數名稱和處理器的形參名稱一致時,會自動將引數繫結,並做型別轉換

連結及引數:

<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";
    }