码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringMVC(三)获取请求参数


    1.1通过ServletAPI获取

    SpringMVC封装的就是原生的servlet

    我们进行测试如下所示:

    1. package com.rgf.controller.service;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import javax.servlet.http.HttpServletRequest;
    5. /**
    6. * 1.获取请求参数的方式:
    7. * 1.通过servletAPI获取
    8. * 只需要在控制器方法的形参位置设置HttpServletRequest类型的形参,就可以在控制器方法中使用request对象获取请求参数
    9. */
    10. @Controller
    11. public class TestParamController {
    12. @RequestMapping("/param/servletAPI")
    13. public String getParamByServlet(HttpServletRequest request){
    14. String username = request.getParameter("username");
    15. String password = request.getParameter("password");
    16. System.out.println("username:"+username+",password:"+password);
    17. return "success";
    18. }
    19. }

    我们的登陆页面如下所示:

    1. "en" xmlns:th="http://www.thymeleaf.org">
    2. "UTF-8">
    3. 首页
    4. index.html

    5. "@{/hello}">测试@RequestMapping注解所标识的位置
    6. "@{/abc}">测试@RequestMapping注解的value属性
    7. "@{/hello}" method="post">
    8. "submit" value="测试@RequestMapping注解的method属性">
    9. "@{/hello?username=admin}">测试@RequestMapping注解的params属性(第一种)
    10. "@{/hello(username='admin')}">测试@RequestMapping注解的params属性(第二种)
    11. "@{/aaa/test/ant(username='admin')}">测试@RequestMapping注解支持ant风格的路径

    12. "@{/param/servletAPI}" method="post">
    13. 用户名: "text" name="username">
    14. 密码: "password" name="password">
    15. 提交: "submit" value="登录">
    16. "@{/param/servletAPI}">

     点击登录之后,即会跳转到成功界面。

    同时我们的控制台会进行输出:username:admin,password:123456

    1.2通过控制器方法的形参获取请求参数和@RequestParam的使用

    我们的页面如下所示:

    1. "en" xmlns:th="http://www.thymeleaf.org">
    2. "UTF-8">
    3. 首页
    4. index.html

    5. "@{/hello}">测试@RequestMapping注解所标识的位置
    6. "@{/abc}">测试@RequestMapping注解的value属性
    7. "@{/hello}" method="post">
    8. "submit" value="测试@RequestMapping注解的method属性">
    9. "@{/hello?username=admin}">测试@RequestMapping注解的params属性(第一种)
    10. "@{/hello(username='admin')}">测试@RequestMapping注解的params属性(第二种)
    11. "@{/aaa/test/ant(username='admin')}">测试@RequestMapping注解支持ant风格的路径

    12. "@{/param}" method="post">
    13. 用户名: "text" name="username">
    14. 密码: "password" name="password">
    15. 提交: "submit" value="登录">
    16. "@{/param/servletAPI}">
    1. package com.rgf.controller.service;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import javax.servlet.http.HttpServletRequest;
    5. /**
    6. * 1.获取请求参数的方式:
    7. * 1.通过servletAPI获取
    8. * 只需要在控制器方法的形参位置设置HttpServletRequest类型的形参,就可以在控制器方法中使用request对象获取请求参数
    9. * 2.通过控制器方法的形参获取
    10. * 只需要在控制器方法的形参位置,设置一个形参,形参的名字要和请求参数的名字一致即可。
    11. *
    12. */
    13. @Controller
    14. public class TestParamController {
    15. @RequestMapping("/param/servletAPI")
    16. public String getParamByServlet(HttpServletRequest request){
    17. String username = request.getParameter("username");
    18. String password = request.getParameter("password");
    19. System.out.println("username:"+username+",password:"+password);
    20. return "success";
    21. }
    22. @RequestMapping("/param")
    23. public String getParam(String username,String password){
    24. return "success";
    25. }
    26. }

    我们进行如下界面:

    我们点击登陆之后,会跳转到成功界面, 此时控制台会进行输出:

    username:root,password:123456

    当请求参数的名字和控制器方法的形参名字不一致的时候,如果继续获取的话,控制台会输出为null.面对这种情况,我们需要进行手动添加。

    我们需要利用@RequestParam标签:其下有三个属性

    我们将界面修改如下所示:

    1. "en" xmlns:th="http://www.thymeleaf.org">
    2. "UTF-8">
    3. 首页
    4. index.html

    5. "@{/hello}">测试@RequestMapping注解所标识的位置
    6. "@{/abc}">测试@RequestMapping注解的value属性
    7. "@{/hello}" method="post">
    8. "submit" value="测试@RequestMapping注解的method属性">
    9. "@{/hello?username=admin}">测试@RequestMapping注解的params属性(第一种)
    10. "@{/hello(username='admin')}">测试@RequestMapping注解的params属性(第二种)
    11. "@{/aaa/test/ant(username='admin')}">测试@RequestMapping注解支持ant风格的路径

    12. "@{/param}" method="post">
    13. 用户名: "text" name="name">
    14. 密码: "password" name="password">
    15. 提交: "submit" value="登录">
    16. "@{/param/servletAPI}">

     此时找不到,我们将匹配的方法修改如下所示:

    1. package com.rgf.controller.service;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RequestParam;
    5. import javax.servlet.http.HttpServletRequest;
    6. /**
    7. * 1.获取请求参数的方式:
    8. * 1.通过servletAPI获取
    9. * 只需要在控制器方法的形参位置设置HttpServletRequest类型的形参,就可以在控制器方法中使用request对象获取请求参数
    10. * 2.通过控制器方法的形参获取
    11. * 只需要在控制器方法的形参位置,设置一个形参,形参的名字要和请求参数的名字一致即可。
    12. *
    13. */
    14. @C
  • 相关阅读:
    -----指针进阶
    排序算法3:归并排序与计数排序
    「Python实用秘技15」pandas中基于范围条件进行表连接
    学习 Mybatis
    LeetCode简单题之回环句
    敲代码常用快捷键
    7.MySQL复合查询
    ESPHome不经过HA设备1直接控制设备2
    常用脚本学习手册——Bat脚本
    day2学习笔记
  • 原文地址:https://blog.csdn.net/weixin_59448049/article/details/133563967
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号