SpringMvc处理器方法参数获取

1、直接使用方法的参数逐个接收

参数名称前端和后端一一对应

java 复制代码
// 1:直接使用方法的参数逐个接收 要求:参数的名称必须与请求中携带的参数名称一致
    // 优势:不需要类型转换,前后端类型直接对应
    @RequestMapping("test01")
    public ModelAndView test01(Integer teamId, String teamName, String teamLocation) {
        System.out.println("teamId: " + teamId + " teamName: " + teamName + " teamLocation: " + teamLocation);
        return new ModelAndView("OK");
    }
html 复制代码
<h3>1、直接使用方法的参数逐个接收</h3>
    <form action="/param/test01" method="post">
        球队ID:<input name="teamId"/><br>
        球队name:<input name="teamName"/><br>
        球队location:<input name="teamLocation"/><br>
        <button type="submit">提交</button>
    </form>

2、用对象接收多个参数

要求:请求中携带的参数必须域对象属性名一致

html 复制代码
    <h3>2、使用对象接收多个参数</h3>
    <form action="/param/test02" method="post">
        球队ID:<input name="teamId"/><br>
        球队name:<input name="teamName"/><br>
        球队location:<input name="location"/><br>
        <button type="submit">提交</button>
    </form>
java 复制代码
public class Team {
    private Integer teamId;
    private String teamName;
    private String location;
}

@RequestMapping("test02")
    public ModelAndView test02(Team team) {
        System.out.println(team);
        return new ModelAndView("OK");
    }

3、请求参数和方法参数名称不一致

请求参数和方法名称的参数不一致 使用注解@RequestParam(value"请求中的名称")

required: 表示参数是否是必须的,true:没有则报错 false;没有该参数则报错

defaultValue: 表示参数为空时的默认值

html 复制代码
 <h3>3、请求参数和方法名称的参数不一致</h3>
    <form action="/param/test03" method="post">
        球队ID:<input name="teamId"/><br>
        球队name:<input name="teamName"/><br>
        球队location:<input name="location"/><br>
        <button type="submit">提交</button>
    </form>
java 复制代码
@RequestMapping("test03")
    public ModelAndView test03(@RequestParam(value = "teamId", required = false, defaultValue = "0") Integer id,
                               @RequestParam(value = "teamName") String name,
                               @RequestParam(value = "location") String location) {
        System.out.println("teamId: " + id + " teamName: " + name + " location: " + location);
        return new ModelAndView("OK");
    }

4、使用HttpServletRequest对象获取参数

跟javaweb中是一样的,因为Springmvc框架的底层是由servlet实现的

html 复制代码
<h3>4、使用HttpServletRequest获取参数</h3>
    <form action="/param/test04" method="post">
        球队ID:<input name="teamId"/><br>
        球队name:<input name="teamName"/><br>
        球队location:<input name="location"/><br>
        <button type="submit">提交</button>
    </form>
java 复制代码
@RequestMapping("test04")
    public ModelAndView test04(HttpServletRequest req) {
        String teamName = req.getParameter("teamName");
        String id = req.getParameter("teamId");
        String location = req.getParameter("location");
        System.out.println("teamName: " + teamName + " id: " + id + " location: " + location);
        return new ModelAndView("OK");
    }

5、使用url地址传参

java 复制代码
@RequestMapping("test05/{id}/{name}/{loc}")
    public ModelAndView test05(@PathVariable("id") Integer id, @PathVariable("name") String name, @PathVariable("loc") String loc) {
        System.out.println("teamId: " + id + " teamName: " + name + " location: " + loc);
        return new ModelAndView("OK");
    }

6、获取日期类型参数

对象类型中的日期属性上需要添加注解@DateFormat(pattern = "yyyy-MM-dd"),通过pattern参数来修改日期的格式

html 复制代码
 <h3>6、获取日期类型的参数</h3>
    <form action="/param/test06" method="post">
        球队ID:<input name="teamId"/><br>
        球队name:<input name="teamName"/><br>
        球队location:<input name="location"/><br>
        球队date:<input name="date"/><br>
        <button type="submit">提交</button>
    </form>
java 复制代码
public class Team {
    private Integer teamId;
    private String teamName;
    private String location;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date date;
}
@RequestMapping("test06")
    public ModelAndView test06(Team team) {
        System.out.println(team);
        return new ModelAndView("OK");
    }

7、获取数组类型参数

html 复制代码
    <h3>7、获取数组类型的参数</h3>
    <form action="/param/test07" method="post">
        球队name1:<input name="teamName"/><br>
        球队name2:<input name="teamName"/><br>
        球队name3:<input name="teamName"/><br>
        球队name4:<input name="teamName"/><br>
        <button type="submit">提交</button>
    </form>
java 复制代码
 @RequestMapping("test07")
    public ModelAndView test07(String[] teamName, HttpServletRequest req) {
        // 方式1
        for(String i : teamName) {
            System.out.println(i);
        }
        System.out.println("-----");
        // 方式2
        String[] teamNames = req.getParameterValues("teamName");
        for(String i : teamNames) {
            System.out.println(i);
        }
        return new ModelAndView("OK");
    }

8、获取集合类型参数

简单类型的可以通过@RequestParam注解实现;对象集合不支持直接获取,必须封装在类中,作为一个属性操作

html 复制代码
<form action="/param/test09" method="post">
        球队id1:<input type="text" name="teamList[0].teamId"/><br/>
        球队id2:<input type="text" name="teamList[1].teamId"/><br/>
        球队id3:<input type="text" name="teamList[2].teamId"/><br/>
        球队名称1:<input type="text" name="teamList[0].teamName"/><br/>
        球队名称2:<input type="text" name="teamList[1].teamName"/><br/>
        球队名称3:<input type="text" name="teamList[2].teamName"/><br/>
        <button type="submit">提交</button>
    </form>
java 复制代码
@RequestMapping("test08")
    public ModelAndView test08(@RequestParam("teamName") List<String> nameList){
        System.out.println("test08-----------------");
        for (String s : nameList) {
            System.out.println(s);
        }
        return new ModelAndView("ok");
    }
相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅4 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
passerby60615 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了5 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅5 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅6 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7256 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai