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添加过滤器进行配置即可

相关推荐
爬山算法1 分钟前
Redis(166)如何使用Redis实现实时统计?
java·redis·bootstrap
better_liang3 分钟前
每日Java面试场景题知识点之-Spring Boot微服务配置管理
java·spring boot·微服务·面试题·配置管理
seven97_top4 分钟前
数据结构——树
java·数据结构
凛冬君主5 分钟前
探索 Spring 的基础依赖与 Spring Boot 依赖
java·spring boot·spring
tangdou3690986555 分钟前
AI真好玩系列-Three.js手势控制游戏开发教程 | Interactive Game Development with Three.js Hand Con
前端·人工智能·ai编程
谷粒.6 分钟前
让缺陷描述更有价值:测试报告编写规范的精髓
java·网络·python·单元测试·自动化·log4j
七夜zippoe7 分钟前
基于ReAct框架的智能体构建实战 - 从原理到企业级应用
前端·javascript·react.js·llm·agent·react
qinyuan158 分钟前
使用husky和fabric规范git提交的注释
前端·后端
T___T8 分钟前
偷看浏览器后台,发现它比我忙多了
前端·浏览器
alamhubb9 分钟前
vue也支持声明式UI了,向移动端kotlin,swift看齐,抛弃html,pug升级版,进来看看新语法吧
前端·javascript·前端框架