前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC请求参数的绑定

SpringMVC请求参数的绑定

作者头像
多凡
发布2019-11-01 09:36:19
6940
发布2019-11-01 09:36:19
举报
文章被收录于专栏:sringbootsringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/97688141

我们都知道,表单请求参数都是基于 key=value的/ springMVC绑定请求参数的过程时通过把表单提交请求参数, 作为控制器中方法参数进行绑定的。

在这里插入图片描述
在这里插入图片描述
1.支持的数据类型:
在这里插入图片描述
在这里插入图片描述
2.使用要求:

如果是基本类型或者 String类型: 要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写)

如果是 POJO类型,或者它的关联对象: 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型。

如果是集合类型,有两种方式: 第一种: 要求集合类型的请求参数必须在 POJO 中。在表单中请求参数名称要和 POJO 中集合属性名称相同。 给 List 集合中的元素赋值,使用下标。 给 Map 集合中的元素赋值,使用键值对。 第二种: 接收的请求参数是 json 格式数据。需要借助一个注解实现。

注意: 它还可以实现一些数据类型自动转换。内置转换器全都在:org.springframework.core.convert.support 包下。 如遇特殊类型转换要求,需要我们自己编写自定义类型转换器。

3.基本类型和String类型做参数
在这里插入图片描述
在这里插入图片描述

注意:我们的参数名称必须和请求key值称保持一致。(严格区分大小写)

4.POJO 类型作为参数

业务模型

在这里插入图片描述
在这里插入图片描述

表单

在这里插入图片描述
在这里插入图片描述

controller

在这里插入图片描述
在这里插入图片描述

测试结果

在这里插入图片描述
在这里插入图片描述

配置WEB-INF下web.xml 解决中文乱码问题

代码语言:javascript
复制
    <!--配置解决中文乱码的过滤器-->
    <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如下:当用户输入以 - 分割为例

代码语言:javascript
复制
//类型转换工具类
//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

代码语言:javascript
复制
    <!--配置自定义类型转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="cn.itcast.utils.StringToDateConverter"/>
            </set>
        </property>
    </bean>
5.POJO 类中包含集合类型参数

业务模型domian

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jsp表单写法

代码语言:javascript
复制
    <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

代码语言:javascript
复制
    @RequestMapping ("/testUserAndAccount")
    public String testUserAndAccount(User user){
        System.out.println(user);
        return "success";
    }

测试结果:

在这里插入图片描述
在这里插入图片描述
6.使用 ServletAPI 对象作为方法参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.支持的数据类型:
  • 2.使用要求:
  • 3.基本类型和String类型做参数
  • 4.POJO 类型作为参数
  • 5.POJO 类中包含集合类型参数
  • 6.使用 ServletAPI 对象作为方法参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档