前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化

                          --WZY

一、参数绑定

      1.1、什么是参数绑定?

        客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容进行数据转换,然后将转换后的值覆给controller方法的形参,这就是参数绑定的过程,其实,springmvc就是使用controller方法形参来接收请求的参数

      1.2、springmvc默认支持的参数类型

        可以在Controller方法的形参中直接使用以下类型

          HttpServletRequest、HttpServletResponse、HttpSession:这三个很熟悉,不做解释

          Model/ModelMap:将model数据填充到request域,比如之前的ModelAndView对象添加list,其实就是将list添加到request作用域,只是ModelAndView对象不仅能够添加model数据,还能够添加视图。而Model对象的功能就只有将model数据填充到request作用域

          springmvc(三) 参数绑定、

        如图所示,就是这样,在形参中使用这几个对象,那么在方法中就能直接用这几个对象了。有了request对象,就能够使用我们以前学过的老方法获取请求参数等一些信息了。

      1.3、绑定简单类型的参数

        上面讲解的只是默认支持的参数类型,有request等一些对象,必然是很好很方便的一件事,比如获取请求参数就可以得到解决了,但是springmvc提供更强大一些的功能。

        绑定简单类型的参数规则

          1.3.1、如果请求参数的key和Controller类中方法的形参名称一致,那么就直接绑定;

            请求url:http://localhost:8080/ssm_test/editItems.do?id=2   模拟客户端发送了一个id=2的请求参数过来,这里使用的是get方式,如果post方式也是一样的道理

            Controller方法:

                springmvc(三) 参数绑定、

            分析:形参中的名称与请求参数的名称相同,固可以直接绑定。

          1.3.2、如果请求参数的key和Controller类中方法的形参名称不一致,那么就需要使用@RequestParam注解来进行参数绑定

            请求url:http://localhost:8080/ssm_test/editItems.do?itemsId=2   模拟客户端发送了一个id=2的请求参数过来

            Controller方法:

                springmvc(三) 参数绑定、

            分析:使用@RequestParam("itemsId")注解将名为itemsId的请求参数的值赋值给形参中名为id的参数。注意,在对应的形参前面加该注解。

 

      1.4、绑定pojo

        使用springmvc绑定pojo的参数时,要求jsp中input框的name值要和Controller方法形参的pojo对象中的属性名称一致,如下图

          jsp页面

              springmvc(三) 参数绑定、

          controller方法

              springmvc(三) 参数绑定、  

          Items类

              springmvc(三) 参数绑定、

      1.5、参数绑定时日期类型转换问题

        在我们从jsp页面传过来的参数的类型都是object的,而我们自己编写的是有具体类型的,比如id是需要int型,name是需要string型,而springmvc就会帮我们将这些简单的类型自动进行类型转换,但是当遇到Date类型的时候,就转换不了,需要我们自己写一个类型转换器,然后给适配器配上,从而jsp传过来的参数能够转换成我们需要的日期类型,如果不自定义类型转换器的话,会报错             即把请求中的日期字符串转成java的日期类型,该日期类型与pojo中日期属性的类型保持一致            

        1.5.1、自定义Converter

            springmvc(三) 参数绑定、  

package com.wuhao.ssm.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;


public class DateConverter implements Converter<String,Date> {

    @Override
    public Date convert(String source) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
            return sdf.parse(source);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}
DateConverter.java

相关文章: