14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue

本节课是@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
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第1张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第2张图片
2.当请求是:127.0.0.1:9999/springmvc/get_param/test1?username=tom
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第3张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第4张图片

结论:

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

1.@RequestParam绑定单个请求参数值

1.@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
	}
}

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第5张图片

2.@RequestParam(“username”)

可以用自己设定的参数名接收参数值
传输参数名和接收参数名不保持一致,可以使用@RequestParam

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第6张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第7张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第8张图片

3.@RequestParam(value=“username”,required=false)

假设传输参数和接收参数名不保持一致,又不想让程序报错可以使用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时,会报错

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第9张图片

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第10张图片
为false时,就不会报错

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第11张图片

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第12张图片

4.@RequestParam(value=“username”,required=true,defaultValue=“admin”)

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
		 */
	}
}

不传值的情况

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第13张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第14张图片
传的参数名与自己设定的不一样时,用默认值,也不会报错

14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第15张图片
14.springMVC中获取请求中所携带的参数——@RequestParam中value,required,defaultValue_第16张图片

5.SPEL表达式

	//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']}即可

你可能感兴趣的:(SpringMVC,springmvc)