SpringMVC:1_3 请求参数的绑定

1、请求参数的绑定说明

绑定机制:

  • 表单提交的数据都是 k=v 格式的。username=haha&password=123
  • SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定。
  • 要求:提交表单的 name 和参数的名称是相同的。

支持的数据类型:

  • 基本数据类型和字符串类型
    在这里插入图片描述在这里插入图片描述

  • 实体类型(JavaBean)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果 Account 类中包含引用类型,引用类型的属性为 uname 和 age,那么可以这样写:
    在这里插入图片描述
    在这里插入图片描述

  • 集合数据类型(List、map集合等)
    在这里插入图片描述
    在这里插入图片描述

2、特殊情况–自定义类型转换

大部分情况下,SpringMVC会自动完成类型转换,比如上面的 money 和 age,表单提交的是字符串类型,SpringMVC 会自动转换成 Integer 类型。

但是有些情况不好转换,比如“2011-1-1”这种格式的日期,SpringMVC无法转换成正确的日期格式。因此需要自定义类型转换。(Java可以对 “2011/1/1” 这种格式的字符串自动转换为日期)
在这里插入图片描述
步骤:

1、定义一个类,实现 Converter 接口,该接口有两个泛型。

/**
 * 把字符串转化转换成日期
 */
public class StringToDateConverter implements Converter<String, Date> {
    @Override
    public Date convert(String s) {
        if(s == null) {
            throw new RuntimeException("请您传入数据");
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return sdf.parse(s);
        } catch (ParseException e) {
            throw new RuntimeException("转换出现错误");
        }
    }
}

2、在 spring.xml 配置自定义类型转换器

<!-- 配置自定义类型转换器 -->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.xiaoxin.utils.StringToDateConverter"></bean>
        </set>
    </property>
</bean>
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

配置过滤器解决中文乱码问题

在这里插入图片描述

获取 Servlet 原生的 API

要什么,直接在对应类的参数列表里面写:

@RequestMapping("/testServlet")
public String testServlet(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("testServlet方法执行了");
    System.out.println(request);
    HttpSession session = request.getSession();
    System.out.println(session);
    return "success";
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值