springmvc07

请求参数名和处理器方法的形参名不一样,使用 @RequestParam 注解


首页 index.jsp 的参数名是 iname 和 iage

<p>请求参数名和处理器方法的形参名不一样</p>
<form action="other.do" method="post">
姓名:<input type="text" name="iname"><br/>
年龄:<input type="text" name="iage"><br/>
<input type="submit" value="提交参数">
</form>
1
2
3
4
5
6

控制器方法的 doOther 方法形参为 name 和 age

/*
* 请求参数名和处理器方法的形参名不一样
* @RequestParam:定义在处理器方法的形参前面
* 属性:1. value,请求参数名,可省略
* 2. required,是一个Boolean类型,默认为true,表示必须包含参数
* */
@RequestMapping(value = "/other.do")
public ModelAndView doOther(@RequestParam("iname" ) String name,
@RequestParam("iage") Integer age){
System.out.println("doOther方法的,name="+name+", age="+age);

ModelAndView mv = new ModelAndView();
mv.addObject("myname",name);
mv.addObject("myage",age);
mv.setViewName("show");
return mv;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

但是有一个问题,当不通过首页传入参数,直接加载网址:http://localhost:8080/03_recevieparam/other.do ,将会报400的错,说明请求端输入有问题,如下图

 


此时将@RequestParam标签的属性required改为 fslse,不用参数也可以显示show.jsp。
当然我们希望required=true,作为前端限制。


public ModelAndView doOther(@RequestParam(value = "iname",required=false) String name,
@RequestParam(value = "iage",required = false) Integer age){
1
2

 

 


对象参数接收
将处理器方法的参数定义为一个对象,对象的属性名要求和请求中参数名一致


先在vo包下定义一个Student 类


————————————————
版权声明:本文为CSDN博主「头发在风中哭泣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40350981/article/details/109645897

posted @   青竹之下  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示