1. 程式人生 > >springMvc--接受請求參數

springMvc--接受請求參數

order BE -- 解決 orm val 支持 參數 IV

目錄

接收基本類型
接收對象類型:
1)接收有關系的對象
2)接收多個對象
接收數組類型:
接收集合類型:
1) list集合泛型是基本類型,例如:list
2)list集合泛型對象類型,例如:List users
3)Map集合: Map集合中封裝的是 Map<string,user> maps

接收基本類型

表單:

<h1>接受基本類型參數到Controller</h1>
<form action="/param/test" method="post">
     用戶編號:<
input type="text" name="id"/> 用戶名:<input type="text" name="name"/> <input type="submit" value="提交"/> </form>

controller:

/**
 * 接受基本類型參數
 */
@RequestMapping("/test")
public String test(Integer id,String name){
     System.out.println(id);
     System.out.println(name);
     
return "index"; }

post提交方式提交表單, 出現中文亂碼, 可以在web.xml中配置字符過濾器解決這個問題

web.xml

<!-- 處理post提交中文亂碼 -->
<filter>
    <filter-name>characterEncoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--  指明定編碼規則 -->
<init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern>
</filter-mapping>

接收對象類型:

實體類:user和order存在關系

public class User {
    private String id;  
    private String name;
    private Order order;
    ......
}    
public class Order {
    private Integer no;
    private String name;
    .......
)

1)接收有關系的對象

表單:

<h1>接受對象類型參數到Controller</h1>
<form action="/param/test1" method="post">
    用戶編號:<input type="text" name="id"/>
    用戶名:<input type="text" name="name"/>
    訂單編號:<input type="text" name="order.no"/>
    訂單名稱:<input type="text" name="order.name"/>
    <input type="submit" value="提交"/>
</form>

controller:

/**
 * 接受對象類型參數,通過user中的關系屬性,獲得order
 */
@RequestMapping("/test1")
public String test1(User user){
   System.out.println(user.getid());
   System.out.println(user.getOrder().getNo());
   return "index";
}

2)接收多個對象

如果是沒有關系的實體類,需要把實體類封裝在一個Vo中:

BeanVO:

/**
 *user和order數據傳輸類
 */
public class BeanVO {
    private User user;
    private Order order;
    ......
}

controller:

/**
 * 接受多個對象類型參數
 * 如果多個pojo之間沒有關系,也可以采用這個方法
 */
@RequestMapping("/test2")
public String test1(BeanVO beanVO){
     System.out.println(beanVO.getUser());
     System.out.println(beanVO.getOrder());
     return "index";
}

接收數組類型:

springMvc支持接收數組類型

表單:

<h1>接受數組類型參數到Controller</h1>
<form action="/param/test3" method="post">
    str[0]:<input type="text" name="str"/>
    str[1]:<input type="text" name="str"/>
    str[2]:<input type="text" name="str"/>
    <input type="submit" value="提交"/>
</form>

controller:

/**
 * 支持接收接受數組類型
 * @requestMapping 中,屬性二:method=RequestMethod.POST
 * 註意: 一旦方法聲明的@requestMapping註解中加入method屬性, 該方法只能被method屬性中聲明的提交方式訪問, 默認支持所有提交方式
 */
@RequestMapping(value="/test3",method=RequestMethod.POST)
 public String test2(String[] str){
     for (String string : str) {
        System.out.println(string);
     }
     return "index";
 }

接收集合類型:

springMvc不支持直接接受集合類型,需要定義一個Vo類

public class CollectionVO {
    private List<String> list;
    private List<User> users;
    private Map<String,User> maps;
    ......
}

接下來分別測試

1) list集合泛型是基本類型,例如:list<String>

表單:

<h1>接受集合類型,泛型是基本類型參數到Controller</h1>
<form action="/param/test4" method="post">
     list[0]:<input type="text" name="list"/>
     list[1]:<input type="text" name="list"/>
     list[2]:<input type="text" name="list"/>
     <input type="submit" value="提交"/>
</form>

controller:

/**
 * 接受集合類型參數 List<String>
 *     註意:springmvc 不支持在方法中定義集合類型參數接受直接接受
 *  解決辦法:
 *      封裝接收
 */
@RequestMapping("/test4")
public String test3(CollectionVO collectionVO){
    for (String string : collectionVO.getList()) {
        System.out.println(string);
     }
    return "index";
}

2)list集合泛型對象類型,例如:List<User> users

form表單:

<h1>接受集合泛型User類型參數到Controller</h1>
<form action="/param/test5" method="post">
    users[0].id:<input type="text" name="users[0].id"/>
    users[1].id:<input type="text" name="users[1].id"/>
    users[2].id:<input type="text" name="users[2].id"/>
    <input type="submit" value="提交"/>
</form>

controller: 接受到的view數據,會被封裝成3個User對象並添加到List<User> users集合中

/**
 * 接受集合類型參數 List<User>
 *     註意:springmvc 不支持集合類型參數接受
 *  解決辦法:
 *     封裝接收
 */
@RequestMapping("/test5")
public String test4(CollectionVO collectionVO){
     for (User user : collectionVO.getUsers()) {
         System.out.println(user);
     }
     return "index";
}

3)Map集合: Map集合中封裝的是 Map<String,User> maps

form表單:

<h1>接受Map集合泛型String,User類型參數到Controller</h1>
<form action="/param/test6" method="post">
     maps:<input type="text" name="maps[‘123‘].id"/>
     maps:<input type="text" name="maps[‘456‘].id"/>
     maps:<input type="text" name="maps[‘789‘].id"/>
     <input type="submit" value="提交"/>
</form>

controller:

/**
 * map集合參數接受  Map<String,User> maps
 */
@RequestMapping("/test6")
public String test5(CollectionVO collectionVO){  
    for (Map.Entry<String, User> map : collectionVO.getMaps().entrySet()) {
         System.out.println(map.getKey()+"   ------>"+map.getValue());
    }
        
     return "index";
}

springMvc--接受請求參數