绑定的机制

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

支持的数据类型

  • SpringMVC 绑定请求参数是自动实现的,但是要想使用,必须遵循使用要求。指表单中的name属性

1. 基本数据类型和String类型

  • 要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写)

2. 实体类型(POJO类或包装POJO类)

  • 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型。
  • 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name

3. 集杂数据类型

  1. 数组
  • 表单中name属性相同,value不同;形参是数组,且名称相同
  1. 集合
  • 要求集合类型的请求参数必须在 POJO 中。在表单中请求参数名称要和 POJO 中集合属性名称相同
  • 给 List 集合中的元素赋值,使用下标
  • 给 Map 集合中的元素赋值,使用键值对

4. 请求参数中文乱码的解决

  • 在web.xml中配置Spring提供的过滤器类
<!-- 配置过滤器,解决中文乱码的问题 -->
    <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 的配置文件中可以配置,静态资源不过滤
<!-- location 表示路径,mapping 表示文件,**表示该目录下的文件以及子目录的文件 -->
<mvc:resources location="/css/" mapping="/css/**"/>
<mvc:resources location="/images/" mapping="/images/**"/>
<mvc:resources location="/scripts/" mapping="/javascript/**"/>
  • get 请求方式:tomacat 对 GET 和 POST 请求处理方式是不同的,GET 请求的编码问题,要改 tomcat 的 server.xml配置文件

5. 自定义类型转换器

  1. 表单提交的任何数据类型全部都是字符串类型,但是后台定义Integer类型,数据也可以封装上,说明Spring框架内部会默认进行数据类型转换。
  2. 如果想自定义数据类型转换,可以实现Converter的接口
  3. 注册自定义类型转换器,在springmvc.xml配置文件中编写配置
  4. 还是可以使用Formatter进行类型转换

6. 使用 ServletAPI 对象作为方法参数

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession

最新文章

  1. Excel数据导入数据库的SQL快速生成
  2. extJS 创建类
  3. cocos2dx 3.x(定时器或延时动作自动调用button的点击响应事件)实现自动内测
  4. android自定义RadioGroup实现可以添加多种布局
  5. Oracle在Linux下使用异步IO(aio)配置
  6. Android 快捷方式
  7. C++读写CSV文件
  8. BZOJ 1820: [JSOI2010]Express Service 快递服务( dp )
  9. Hybrid
  10. freemarker写select组件报错总结(四)
  11. Swift基础之实现下拉变大和OC下拉变大上拉缩小Demo
  12. day 23 面向对象二
  13. github+jekyll个人博客搭建
  14. linux03:系统常用的命令
  15. Linux 系统下实践 VLAN
  16. csv与xlsx导出
  17. vue 中通过 ajax 获取数据时,如何避免绑定的数据中出现 property of undefined 错误
  18. C语言中的语句
  19. SpringMVC之声明式校验
  20. 交换机console口连接

热门文章

  1. 蜂窝网络TDOA定位方法的Fang算法研究及仿真纠错
  2. ue4 delegate event
  3. unity打包选项编辑器扩展
  4. codevs3145 汉诺塔游戏
  5. NFS服务及DHCPD服务
  6. Ubuntu英文版中无法输入中文标点符号的问题
  7. Git 深度学习填坑之旅一(git安装和配置、基本命令)
  8. sublime安装与使用
  9. shell学习(9)- du和df区别及详解
  10. SQL Server事务的四种隔离级别