zoukankan      html  css  js  c++  java
  • SpringMVC-请求参数的绑定

    绑定的机制

    • 表单提交的数据都是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
  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/mewcoder/p/10696346.html
Copyright © 2011-2022 走看看