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 @ 2021-04-12 21:34  青竹之下  阅读(38)  评论(0编辑  收藏  举报