SpringMVC传递单个参数

1,163 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

获取参数

获取参数,就是获取到客户端给我们服务器传来的参数!

传递单个参数

@Controller
@RequestMapping(value = "/parame",method = RequestMethod.POST)//接收post请求
@ResponseBody //可以返回非静态页面!
public class GetParameter {
    @RequestMapping("/get")
    public void getSingerParamer(String name){
        System.out.println("客户端发来的name: "+name);
    }
}

启动项目后在浏览器发送一个post请求给服务器即可 在这里插入图片描述 在这里插入图片描述 可以看到SpringMVC接收请求直接通过参数就拿到了客户端的请求信息,不用使用之前Servlet通过Request请求中的信息读取!

注意

前后端的属性参数名要一致

在这里插入图片描述 当前后端参数名称不一致时: 在这里插入图片描述 不一致,服务器端将获取不到客户端传来的数据

传递对象

对象实体类

@Data //生成get/setter等方法
public class User {
    private String id;
    private String name;
    private String password;
}

获取到一个对象参数

@Controller
@ResponseBody
@RequestMapping("/user")
public class GetUser {
    @RequestMapping("/get")
    public void getUser(User user){
        System.out.println(user.toString());
    }
}

前端命名要和对象中的属性名相同 在这里插入图片描述

表单参数传递/传递多个参数(非对象)

@Controller
@RequestMapping(value = "/parame",method = RequestMethod.POST)//接收post请求
@ResponseBody //可以返回非静态页面!
public class GetParameter {
    @RequestMapping("/get")
    public void getSingerParamer(String name,Integer password){
        System.out.println("客户端发来的name: "+name);
        System.out.println("客户端发来的password: "+password);
    }
}

在这里插入图片描述

可以看到这里参数的前后顺序并不会影响参数的传递,服务器会根据客户端的发来的名称进行匹配

后端参数重命名(后端参数映射)

我们发现只要客户端发送的数据属性名和参数名不匹配,服务器端就无法接收到客户端传来的数据!

我们如何解决这样的问题呢?

  • 让客户端和我们后端的参数名匹配!
  • 在我们服务器后端进行参数映射

显然第一种方法不是很科学,咱也不能这样子命令前端,都是打工人!

我们可以通过后端参数映射解决这个问题! 直接改参数名嘛? 显然可取,但是当我们已经用该参数写了好多代码时,这不就裂开了! 我们可以在方法头参数前加一个注解即可!

通过 @RequestParam 注解进行参数映射! 这样我们既不用改动前端的代码,也不用改变我们的参数名称就可以实现后端参数重命名!

@Controller
@RequestMapping(value = "/parame",method = RequestMethod.POST)//接收post请求
@ResponseBody //可以返回非静态页面!
public class GetParameter {
    @RequestMapping("/get")
    public void getSingerParamer(@RequestParam("username") String name, Integer password){
        System.out.println("客户端发来的name: "+name);
        System.out.println("客户端发来的password: "+password);
    }
}

在这里插入图片描述