• SpringMVC:获取请求数据


    1. 通过@RequestParma注解接收

    /***
     * value和name都可以使用,互为别名
     * 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误)
     * required参数用于设置该参数是否为必须传递参数,默认为true必须传递
     * default设置默认值
     */
    1. @RequestMapping(value = "/user/register")
    2. public String register(
    3. //通过注解直接获取请求报文中携带的参数
    4. @RequestParam(value = "username", required = true) String username,
    5. @RequestParam(name = "password") String password,
    6. @RequestParam(value = "hobby") String[] hobby) {
    7. System.out.println("username=" + username);
    8. System.out.println("password=" + password);
    9. System.out.println(hobby);
    10. return "ok";
    11. }

     2. 依靠控制器方法上的形参名接收

     @RequestParam 这个注解是可以省略的,如果方法形参的名字和提交数据时的name相同,则 @RequestParam 可以省略。

    但有一个前提:如果你采用的是Spring6+版本,你需要在pom.xml文件中指定编译参数'-parameter',配置如下:

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.pluginsgroupId>
    5. <artifactId>maven-compiler-pluginartifactId>
    6. <version>3.12.1version>
    7. <configuration>
    8. <source>21source>
    9. <target>21target>
    10. <compilerArgs>
    11. <arg>-parametersarg>
    12. compilerArgs>
    13. configuration>
    14. plugin>
    15. plugins>
    16. build>

    Controller中的方法只需要这样写:**形参的名字必须和提交的数据的name一致!!!!! 

    1. @PostMapping(value="/register")
    2. public String register(String username, String password, String sex, String[] hobby, String intro){
    3. System.out.println(username + "," + password + "," + sex + "," + Arrays.toString(hobby) + "," + intro);
    4. return "success";
    5. }

    3. 使用pojo类接收请求参数

    创建pojo对象,springmvc通过反射获取pojo类并通过该类的属性名进行匹配存值
    准确来说通过set方法进行匹配赋值,即set方法的名称必须和前端前端传过来的参数名保持一致即可(如:setName,前端传的参数Name=...)
    
    1. public class User {
    2. private String username;
    3. private String password;
    4. private String[] hobby;
    1. @RequestMapping(value = "/user/pojo")
    2. public String pojo(User user) {
    3. System.out.println(user);
    4. for (String s : user.getHobby()) {
    5. System.out.println(s);
    6. }
    7. return "ok";
    8. }

    4. @RequestHead注解

    该注解的作用是:将`请求头信息`映射到`方法的形参上`。和RequestParam注解功能相似,RequestParam注解的作用:将`请求参数`映射到`方法的形参`上。当然,对于RequestHeader注解来说,也有三个属性:value、required、defaultValue,和RequestParam一样,这里就不再赘述了。 

    1. @PostMapping("/register")
    2. public String register(User user,
    3. @RequestHeader(value="Referer", required = false, defaultValue = "")
    4. String referer){
    5. System.out.println(user);
    6. System.out.println(referer);
    7. return "success";
    8. }

     5. @CookieValue注解

    该注解的作用:将`请求提交的Cookie数据`映射到`方法形参`上同样是有三个属性:value、required、defaultValue 

     前端页面发送cookie代码

    1. <script type="text/javascript">
    2. function sendCookie(){
    3. document.cookie = "id=123456789; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";
    4. document.location = "/springmvc/register";
    5. }
    6. script>
    7. <button onclick="sendCookie()">向服务器端发送Cookiebutton>

     后端controller代码

    1. @GetMapping("/register")
    2. public String register(User user,
    3. @RequestHeader(value="Referer", required = false, defaultValue = "")
    4. String referer,
    5. @CookieValue(value="id", required = false, defaultValue = "2222222222")
    6. String id){
    7. System.out.println(user);
    8. System.out.println(referer);
    9. System.out.println(id);
    10. return "success";
    11. }

  • 相关阅读:
    基于ssm的设备信息管理系统
    8月23日
    Tomcat web.xml文件中的mime-mapping
    springmvc第十六个练习(多个拦截器的执行和拦截器过滤器的比较)
    开源利器推荐:美团动态线程池框架的接入分享及效果展示
    springboot+vue+elementUI企业客户信息反馈平台#毕业设计
    Typora+MinIO+Python代码打造舒适协作环境
    一个整合性、功能丰富的.NET网络通信框架
    Netty百万级高并发支持
    抖音矩阵系统源码:开发搭建
  • 原文地址:https://blog.csdn.net/2301_79526467/article/details/139375319