版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44580977/article/details/97688141
我们都知道,表单请求参数都是基于 key=value的/ springMVC绑定请求参数的过程时通过把表单提交请求参数, 作为控制器中方法参数进行绑定的。
如果是基本类型或者 String类型: 要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写)
如果是 POJO类型,或者它的关联对象: 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型。
如果是集合类型,有两种方式: 第一种: 要求集合类型的请求参数必须在 POJO 中。在表单中请求参数名称要和 POJO 中集合属性名称相同。 给 List 集合中的元素赋值,使用下标。 给 Map 集合中的元素赋值,使用键值对。 第二种: 接收的请求参数是 json 格式数据。需要借助一个注解实现。
注意: 它还可以实现一些数据类型自动转换。内置转换器全都在:org.springframework.core.convert.support 包下。 如遇特殊类型转换要求,需要我们自己编写自定义类型转换器。
注意:我们的参数名称必须和请求key值称保持一致。(严格区分大小写)
业务模型
表单
controller
测试结果
配置WEB-INF下web.xml 解决中文乱码问题
<!--配置解决中文乱码的过滤器-->
<filter>
<filter-name>characterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上还存在一个小问题,生日必须严格以 / 分割,这样springMVC框架才会为我们自动类型转换,也可以自己DIY如下:当用户输入以 - 分割为例
//类型转换工具类
//Converter<String,Date> ,第二个为转出类型
public class StringToDateConverter implements Converter<String,Date> {
public Date convert(String source){
//判断
if (source==null){
throw new RuntimeException("请传入数据");
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try{
return df.parse(source);
} catch (ParseException e) {
throw new RuntimeException("数据类型转换出现错误");
}
}
}
配置类型转换器给springmvc框架自动调用,id必须是 conversionService
<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itcast.utils.StringToDateConverter"/>
</set>
</property>
</bean>
业务模型domian
jsp表单写法
<form action="/user/testUserAndAccount" method="post">
姓名:<input type="text" name="username" /><br/>
密码:<input type="text" name="password" /><br/>
用户姓名:<input type="text" name="accounts[0].username" /><br/>
用户余额:<input type="text" name="accounts[0].money" /><br/>
用户姓名:<input type="text" name="accountMap['one'].username" /><br/>
用户余额:<input type="text" name="accountMap['one'].money" /><br/>
<input type="submit" value="提交" />
</form>
controller
@RequestMapping ("/testUserAndAccount")
public String testUserAndAccount(User user){
System.out.println(user);
return "success";
}
测试结果:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有