本节课是@RequestParam注解的具体使用。。。
@RequestMapping("/get_param")
@Controller
public class GetParamController {
//客户端传的参数名和方法接收的参数名保持一致则不需要@RequestParam
@RequestMapping("/test1")
public String test1(String name) { //name接收
System.out.println("GetParamController test1()...");
System.out.println("name="+name);
return "test";//跳转到test.jsp
}
}
结果:
1.当请求是:127.0.0.1:9999/springmvc/get_param/test1?name=tom
2.当请求是:127.0.0.1:9999/springmvc/get_param/test1?username=tom
结论:
127.0.0.1:9999/springmvc/get_param/test1?name=tom
结果:name=tom
127.0.0.1:9999/springmvc/get_param/test1?username=tom(前后端之间不匹配)
结果:name=null
问题??? 前后端假如说是不匹配能还接收到参数 test2解决了
在方法参数里面加上了@RequestParam
这个注解要求我们传的值必须要和我们自己设定的变量名完全一样
@RequestMapping("/get_param")
@Controller
public class GetParamController {
//传输参数名和接收参数名不保持一致,可以使用@RequestParam
@RequestMapping("/test2")
public String test2(@RequestParam("username") String name) {
// ../test2?username=aaa
//将username赋值给name
System.out.println("GetParamController test2()...");
System.out.println("name="+name);
return "test";//跳转到test.jsp
}
}
可以用自己设定的参数名接收参数值
传输参数名和接收参数名不保持一致,可以使用@RequestParam
假设传输参数和接收参数名不保持一致,又不想让程序报错可以使用required=false,默认为true
@RequestMapping("/get_param")
@Controller
public class GetParamController {
//假设传输参数和接收参数名不保持一致,又不想让程序报错可以使用required=false,默认为true
@RequestMapping("/test3")
public String test3(@RequestParam(value="username",required=false) String name) {
//required=false, 访问../test3?user=aaa时,name=null 结果为null 但是不会报错
System.out.println("GetParamController test3()...");
System.out.println("name="+name);
return "test";//跳转到test.jsp
}
}
为true时,会报错
defaultValue默认值,如果传输参数没有匹配上则使用默认值,若匹配上则使用传输过来的内容
@RequestMapping("/get_param")
@Controller
public class GetParamController {
//defaultValue默认值,如果传输参数没有匹配上则使用默认值,若匹配上则使用传输过来的内容
@RequestMapping("/test4")
public String test4(@RequestParam(value="username",required=true,defaultValue="admin") String name) {
// ../test4?user=aaa username与user匹配不上,则name=admin
System.out.println("GetParamController test4()...");
System.out.println("name="+name);
return "test";//跳转到test.jsp
/*
*../test4?user=aaa或者../test4 结果:name=admin
*../test4?username=tom 匹配上了 结果:name=tom
*/
}
}
不传值的情况
//SPEL表达式
@RequestMapping("/test5")
public String test5(@RequestParam(value="username",required=true,defaultValue="#{systemProperties['java.vm.version']}") String name) {
System.out.println("GetParamController test5()...");
System.out.println("name="+name);
return "test";//跳转到test.jsp
/*
* ../test5?user=aaa //结果:name=25.74-b02 java虚拟机的版本
* */
}
SpEL表达式:
形式:#{}
作用:可以从spring容器中拿出某个对象以及对应的方法或者变量,并把结果作为值来使用
注意:systemProperties是spring自动方法ioc容器中的一个Properties对象,里面方法中很多系统变量,
要取值只需#{systemProperties['key']}即可