首页 文章资讯内容详情

springMvc--接受请求参数

2026-06-01 2 花语

本文内容纲要:

-接收基本类型 -接收对象类型: -接收数组类型: -接收集合类型:

接收基本类型

表单:

<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