springMvc--接受请求参数
本文内容纲要:
-接收基本类型
-接收对象类型:
-接收数组类型:
-接收集合类型:
接收基本类型
表单:
<h1>接受基本类型参数到Controller</h1>
<formaction="/param/test"method="post">
用户编号:<inputtype="text"name="id"/>
用户名:<inputtype="text"name="name"/>
<inputtype="submit"value="提交"/>
</form>
controller:
/**
*接受基本类型参数
*/
@RequestMapping("/test")
publicStringtest(Integerid,Stringname){
System.out.println(id);
System.out.println(name);
return"index";
}
我的表单是post提交的,开始是发生了乱码问题,那么如何解决post乱码问题呢?
需要在web.xml文件中配置一个字符过滤器
<!--springMvc处理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是一对多的关系
publicclassUser{
privateStringid;
privateStringname;
privateOrderorder;
........
}
publicclassOrder{
privateIntegerno;
privateStringname;
.......
)
1)接收有关系的对象
表单:
<h1>接受对象类型参数到Controller</h1>
<formaction="/param/test1"method="post">
用户编号:<inputtype="text"name="id"/>
用户名:<inputtype="text"name="name"/>
订单编号:<inputtype="text"name="order.no"/>
订单名称:<inputtype="text"name="order.name"/>
<inputtype="submit"value="提交"/>
</form>
controller:
/**
*接受对象类型参数
通过user中的关系属性,获得order
*/
@RequestMapping("/test1")
publicStringtest1(Useruser){
System.out.println(user.getid());
System.out.println(user.getOrder().getNo());
return"index";
}
2)接收多个对象
如果是没有关系的实体类,需要把实体类封装在一个DTO中:
BeanVO:
/**
*user和order数据传输类
*/
publicclassBeanVO{
privateUseruser;
privateOrderorder;
......
}
controller:
/**
*接受多个对象类型参数
*如果多个pojo之间没有关系,也可以采用这个方法
*/
@RequestMapping("/test2")
publicStringtest1(BeanVObeanVO){
System.out.println(beanVO.getUser());
System.out.println(beanVO.getOrder());
return"index";
}
接收数组类型:
springMvc支持接收数组类型
表单:
<h1>接受数组类型参数到Controller</h1>
<formaction="/param/test3"method="post">
str[0]:<inputtype="text"name="str"/>
str[1]:<inputtype="text"name="str"/>
str[2]:<inputtype="text"name="str"/>
<inputtype="submit"value="提交"/>
</form>
controller:
/**
*支持接收接受数组类型
*@requestMapping中
*属性二:method=RequestMethod.POST
*注意:
*一旦方法声明的@requestMapping注解中加入method属性,该方法只能被method属性中声明的提交方式访问
*默认支持所有提交方式
*/
@RequestMapping(value="/test3",method=RequestMethod.POST)
publicStringtest2(String[]str){
for(Stringstring:str){
System.out.println(string);
}
return"index";
}
接收集合类型:
springMvc不支持直接接受集合类型,需要定义一个DTO数据传输类:
publicclassCollectionVO{
privateList<String>list;
privateList<User>users;
privateMap<String,User>maps;
......
}
接下来分别测试
1)list集合泛型是基本类型,例如:list
表单:
<h1>接受集合类型泛型是基本类型参数到Controller</h1>
<formaction="/param/test4"method="post">
list[0]:<inputtype="text"name="list"/>
list[1]:<inputtype="text"name="list"/>
list[2]:<inputtype="text"name="list"/>
<inputtype="submit"value="提交"/>
</form>
controller:
/**
*接受集合类型参数List<String>
*注意:springmvc不支持集合类型参数接受
*解决办法:
*封装接收
*/
@RequestMapping("/test4")
publicStringtest3(CollectionVOcollectionVO){
for(Stringstring:collectionVO.getList()){
System.out.println(string);
}
return"index";
}
2)list集合泛型对象类型,例如:Listusers
form表单:
<h1>接受集合泛型User类型参数到Controller</h1>
<formaction="/param/test5"method="post">
users[0].id:<inputtype="text"name="users[0].id"/>
users[1].id:<inputtype="text"name="users[1].id"/>
users[2].id:<inputtype="text"name="users[2].id"/>
<inputtype="submit"value="提交"/>
</form>
controller:接受到的view数据,会被封装成3个User
/**
*接受集合类型参数List<User>
*注意:springmvc不支持集合类型参数接受
*解决办法:
*封装接收
*/
@RequestMapping("/test5")
publicStringtest4(CollectionVOcollectionVO){
for(Useruser:collectionVO.getUsers()){
System.out.println(user);
}
return"index";
}
3)Map集合:Map集合中封装的是Map<String,User>maps
form表单:
<h1>接受Map集合泛型String,User类型参数到Controller</h1>
<formaction="/param/test6"method="post">
maps:<inputtype="text"name="maps['123'].id"/>
maps:<inputtype="text"name="maps['456'].id"/>
maps:<inputtype="text"name="maps['789'].id"/>
<inputtype="submit"value="提交"/>
</form>
controller:
/**
*map集合参数接受Map<String,User>maps
*/
@RequestMapping("/test6")
publicStringtest5(CollectionVOcollectionVO){
for(Map.Entry<String,User>map:collectionVO.getMaps().entrySet()){
System.out.println(map.getKey()+"------>"+map.getValue());
}
return"index";
}
本文内容总结:接收基本类型,接收对象类型:,接收数组类型:,接收集合类型:,
原文链接:https://www.cnblogs.com/liuconglin/p/5777683.html