作者:liuconglin

接收基本类型

表单:

<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提交的,开始是发生了乱码问题,那么如何解决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是一对多的关系

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)接收多个对象

如果是没有关系的实体类,需要把实体类封装在一个DTO中:

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不支持直接接受集合类型,需要定义一个DTO数据传输类:

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>
* 注意: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--接受请求参数的更多相关文章

  1. SpringMvc接受请求参数的几种情况演示

    说明: 通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数.因此两者在请求方式上会有所不同. 1.直接将接受的参数写在controller对应方法的形参当中(适用于get提 ...

  2. SpringMVC 接受请求参数、作用域传值

    目录 原生servlet接收参数 Spring MVC最基础的参数获取 接收基本数据类型参数 方法参数列表和请求参数不一致的处理方式 接收对象引用数据类型 接收复选框这种多个同名的参数 接收obj.f ...

  3. SpringMVC接受请求参数、

    1. 接收请求参数 1.1. [不推荐]通过HttpServletRequest 在处理请求的方法中,添加HttpServletRequest对象作为参数,在方法体中,直接调用参数对象的getPara ...

  4. Springmvc之接受请求参数二

    Springmvc之接受请求参数 准备工作 新建一个表单提交 请求地址: http://localhost:8080/ProjectName/user/login.do <form action ...

  5. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  6. SpringMVC接受JSON参数详解及常见错误总结

    SpringMVC接受JSON参数详解及常见错误总结 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一 ...

  7. SpringMVC接受JSON参数详解

    转:https://blog.csdn.net/LostSh/article/details/68923874 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session ...

  8. 16 SpringMVC 的请求参数的绑定与常用注解

    1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...

  9. struts2接受请求参数

    https://blog.csdn.net/y249839817/article/details/77702745 https://blog.csdn.net/nthack5730/article/d ...

  10. SpringMVC之请求参数的获取方式

    转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...

随机推荐

  1. nlp算法

    人工智能算法大体上来说可以分类两类:基于统计的机器学习算法(Machine Learning)和深度学习算法(Deep Learning) 总的来说,在sklearn中机器学习算法大概的分类如下: 1 ...

  2. 035 Android Volley框架进行网络请求

    1.volley入门介绍 开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行HTTP通 ...

  3. [转帖]上云测试,这些关键点你get 到没有

    上云测试,这些关键点你get 到没有 https://www.cnblogs.com/mypm/p/10852656.html?tdsourcetag=s_pcqq_aiomsg sticky 还有s ...

  4. Hbuilder环境下配置php

    XAMPP的安装 https://blog.csdn.net/qing666888/article/details/81914389 安装并配置好Xampp后,在Hbuilder中下载php插件,工具 ...

  5. Git学习(一)——熟悉git操作流程

    本篇笔记前面都是仔细介绍使用方法,如果想跳过这些直接熟悉怎么使用,跳到最后一个知识点完整流程介绍. git 了解:特点.优点 1.git用户版和服务版整合在一起,任何机器上都安装了两个版本 2.git ...

  6. WUSTOJ 1337: Car race game(C)树状数组,离散化

    题目链接:1337: Car race game 参考资料:⑴ Car race game 树状数组 棋煜,⑵ 树状数组,⑶ 离散化 补充资料:⑴ qsort,⑵ 二分查找 Description B ...

  7. Android--单选对话框

    import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterfa ...

  8. is 和 as 使用

    类型判断 as: var newParser = parser as ClassA ; 转为ClassA类型赋值给newParser is: var flag = parser is ClassA ; ...

  9. Java8新特性 - 新时间和日期 API

    本地时间和时间戳 主要方法: now:静态方法,根据当前时间创建对象 of:静态方法,根据指定日期/时间创建对象 plusDays,plusWeeks,plusMonths,plusYears:向当前 ...

  10. gulp删除目标文件中所有的console.log()语句——gulp-strip-debug

    1.安装npm包 npm install --save-dev gulp-strip-debug 2.使用 const gulp = require('gulp'); const stripDebug ...