springmvc前端传参,后端接收

RequestMapping注解

复制代码
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
 
    @AliasFor("path")
    String[] value() default {};
 
    @AliasFor("value")
    String[] path() default {};
 
    RequestMethod[] method() default {};
 
    String[] params() default {};
 
    String[] headers() default {};
 
    String[] consumes() default {};
 
    String[] produces() default {};
}

作用: 建立请求URL和处理方法之间的对应关系 出现位置:方法和类上 作用在类上:第一季访问目录 作用在方法上:第二级访问目录 注意:路径可以不写 / 表示应用的根目录开始 属性: path:指定请求的url value:value属性和path属性一样 mthod:指定该方法的请求方式 params:指定限制请求参数条件 headers:发送请求中必须包含的请求头

请求参数的绑定

  • 基本数据类型和字符串类型

  • 实体类(javabean)

  • 集合数据类型(list、map集合等)

  • 以传递用户名和密码为例,修改index.jsp页面,添加绑定参数
复制代码
<html>
<body>
<h2>Hello World!</h2>
<h1>Login</h1>
<a href="/param?username=oneStar&password=123">login</a>
</body>
</html>
在控制层添加请求映射,以参数的形式进行传递
复制代码
    @RequestMapping(path = "/param")
    public String user(@RequestParam("username") String username,@RequestParam("password") String password){
        System.out.println(username);
        System.out.println(password);
        return "success";
    }
实体类绑定参数
  • 创建实体类
复制代码
package com.pyb.pojo;
​
/**
 * @version 1.0
 * @Author 彭彦彬
 * @Date 2025/1/9 21:01
 * @注释
 */
public class User {
    private String username;
    private String password;
​
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
​
    public User() {
    }
​
    public String getUsername() {
        return username;
    }
​
    public void setUsername(String username) {
        this.username = username;
    }
​
    public String getPassword() {
        return password;
    }
​
    public void setPassword(String password) {
        this.password = password;
    }
​
    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
​
  • 修改index.jsp页面
复制代码
<html>
<body>
<h1>Pojo</h1>
<form action="/saveUser" method="post">
    username<input type="text" name="username"/><br>
    password<input type="text" name="password"/><br>
    <input type="submit" value="Button"/><br>
</form>
</body>
</html>
​
  • 在控制层添加请求映射
复制代码
  @RequestMapping("/saveUser")
    public String saveUser(User user) {
        System.out.println(user);
        return "success";
    }
  • 运行后在页面上输入用户名和密码点击提交即可将数据传递给服务器

  • 集合绑定参数

为了方便将数据绑定到List集合和Map集合,这里设置两个用户名和密码,一个用List集合绑定,一个用Map集合绑定

  • 修改index.jsp页面
复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Collection Binding Parameters</title>
</head>
<body>
<h1>Collection and Map Binding Parameters</h1>
<form action="/mapUser" method="post">
    User: <input type="text" name="list[0].username"/><br>
    Password: <input type="password" name="list[0].password"/><br>
    User: <input type="text" name="map['one'].username"/><br>
    Password: <input type="password" name="map['one'].password"/><br>
    <input type="submit" value="Submit"/><br>
</form>
</body>
</html>
  • 编写集合实体类
复制代码
package com.pyb.pojo;
import java.util.List;
import java.util.Map;
/**
 * @version 1.0
 * @Author 彭彦彬
 * @Date 2025/1/9 21:13
 * @注释
 */
public class mapUser {
    private String username;
    private String password;
​
    List<mapUser> list;
    Map<String,mapUser> map;
​
    public String getUsername() {
        return username;
    }
​
    public void setUsername(String username) {
        this.username = username;
    }
​
    public String getPassword() {
        return password;
    }
​
    public void setPassword(String password) {
        this.password = password;
    }
​
    public List<mapUser> getList() {
        return list;
    }
​
    public void setList(List<mapUser> list) {
        this.list = list;
    }
​
    public Map<String, mapUser> getMap() {
        return map;
    }
​
    public void setMap(Map<String, mapUser> map) {
        this.map = map;
    }
​
    @Override
    public String toString() {
        return "mapUser{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", list=" + list +
                ", map=" + map +
                '}';
    }
}
  • 在控制层添加请求映射
复制代码
    @RequestMapping(path="/mapUser")     //请求映射
    public String mapUser(mapUser mapuser){
        System.out.println(mapuser);
        return "success";
    }
  • 运行后在页面上输入用户名和密码点击提交即可将数据以集合形式传递给服务器

解决中文乱码

在绑定参数的时候,当有中文时会出现乱码,而SpringMVC提供了解决方法,在web.xml添加过滤器进行配置即可

相关推荐
BillKu5 分钟前
scss(sass)中 & 的使用说明
前端·sass·scss
楚歌again5 分钟前
【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】
java·spring boot·intellij-idea
酷爱码6 分钟前
IDEA 中 Maven Dependencies 出现红色波浪线的原因及解决方法
java·maven·intellij-idea
疯狂的沙粒9 分钟前
uni-app 项目支持 vue 3.0 详解及版本升级方案?
前端·vue.js·uni-app
Jiaberrr18 分钟前
uniapp Vue2 获取电量的独家方法:绕过官方插件限制
前端·javascript·uni-app·plus·电量
Magnum Lehar36 分钟前
vulkan游戏引擎test_manager实现
java·算法·游戏引擎
sss191s38 分钟前
校招 java 面试基础题目及解析
java·开发语言·面试
异常君41 分钟前
MySQL 中 count(*)、count(1)、count(字段)性能对比:一次彻底搞清楚
java·mysql·面试
谢尔登1 小时前
【React】React 18 并发特性
前端·react.js·前端框架
Joker`s smile1 小时前
使用React+ant Table 实现 表格无限循环滚动播放
前端·javascript·react.js