Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • 数据结构与算法

  • 算法设计与分析

  • Java

  • Python

  • 设计模式

  • 计算机网络

  • Spring笔记

  • SpringMVC笔记

    • SpringMVC简介
    • HelloWorld
    • RequestMapping注解
    • SpringMVC获取请求参数
      • 域对象共享数据
      • SpringMVC的视图
      • RESTful
      • HttpMessageConverter
      • 文件上传和下载
      • 拦截器
      • 异常处理器
      • 注解配置SpringMVC
      • SpringMVC执行流程
    • SpringBoot笔记

    • SpringSecurity

    • Elasticsearch笔记

    • RabbitMQ笔记

    • Docker笔记

    • MySQL

    • Redis

    • Mybatis

    • MybatisPlus

    • Nginx

    • Kubernetes笔记

    • Git

    • Software

    • 微服务笔记

    • bug

    • BackEndNotes
    • SpringMVC笔记
    Geeks_Z
    2023-01-15
    目录

    SpringMVC获取请求参数

    四、SpringMVC获取请求参数

    1、通过ServletAPI获取

    将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

    @RequestMapping("/testParam")
    public String testParam(HttpServletRequest request){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username:"+username+",password:"+password);
        return "success";
    }
    
    1
    2
    3
    4
    5
    6
    7

    2、通过控制器方法的形参获取请求参数

    在控制器方法的形参位置,设置和请求参数==同名==的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参

    <a th:href="@{/testParam(username='admin',password=123456)}">测试获取请求参数-->/testParam</a><br>
    
    1
    @RequestMapping("/testParam")
    public String testParam(String username, String password){
        System.out.println("username:"+username+",password:"+password);
        return "success";
    }
    
    1
    2
    3
    4
    5

    注:

    若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数

    若使用字符串数组类型的形参,此参数的数组中包含了每一个数据

    若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

    3、@RequestParam

    @RequestParam是将请求参数和控制器方法的形参创建映射关系

    @RequestParam注解一共有三个属性:

    ==value==:指定为形参赋值的请求参数的参数名

    ==required==:设置是否必须传输此请求参数,默认值为true

    若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

    ==defaultValue==:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

    4、@RequestHeader

    @RequestHeader是将请求头信息和控制器方法的形参创建映射关系

    @RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

    5、@CookieValue

    @CookieValue是将cookie数据和控制器方法的形参创建映射关系

    @CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

    6、通过POJO获取请求参数

    可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

    <form th:action="@{/testpojo}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        性别:<input type=a"radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>
        年龄:<input type="text" name="age"><br>
        邮箱:<input type="text" name="email"><br>
        <input type="submit">
    </form>
    
    1
    2
    3
    4
    5
    6
    7
    8
    @RequestMapping("/testpojo")
    public String testPOJO(User user){
        System.out.println(user);
        return "success";
    }
    //最终结果-->User{id=null, username='张三', password='123', age=23, sex='男', email='123@qq.com'}
    
    1
    2
    3
    4
    5
    6

    7、解决获取请求参数的乱码问题

    解决获取请求参数的乱码问题,可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter,但是必须在web.xml中进行注册

    <!--配置springMVC的编码过滤器-->
    <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>
        <init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    注:

    SpringMVC中处理编码的过滤器一定要配置到其他过滤器之前,否则无效

    上次更新: 2024/03/29, 08:56:31
    RequestMapping注解
    域对象共享数据

    ← RequestMapping注解 域对象共享数据→

    最近更新
    01
    并行训练
    03-29
    02
    tensor维度转换
    03-26
    03
    ResNet源码解读
    03-23
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 Geeks_Z | MIT License
    京公网安备 11010802040735号 | 京ICP备2022029989号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式