SpringMVC入门学习(五、@RequestMapping参数)

@RequestMapping

  • 这个注解我们前面已经了解过了,是映射url的重要注解
  • value:定义处理url的请求地址
    • value属性支持正则表达式
    • 或关系
    • 通配符、占位符
  • method:处理http的请求方法
  • params:定义url请求中参数的要求
  • headers
  • consums
  • produces

params参数

@Controller
public class Controller_1 {
	

	/*@RequestMapping(value="/find.action",params="name")
	public String find1() {
		System.out.println("find1");
		return "result";
	}
	
	@RequestMapping(value="/find.action",params="!name")
	public String find2() {
		System.out.println("find2");
		return "result";
	}*/
	
	@RequestMapping(value="/find.action",params="name=zhangsan")
	public String find3() {
		System.out.println("find3");
		return "result";
	}
	
	@RequestMapping(value="/find.action",params="name!=zhangsan")
	public String find4() {
		System.out.println("find4");
		return "result";
	} 
	
	
}
  • 这里有四个方法,分别的作用如下
  • 包含name参数
  • 不包含name参数
  • 包含name参数,并且name参数的值等于zhangsan
  • 包含name参数,但name参数的值不等于zhangsan
  • 但是这里需要注意一下,如果请求,有可能会比配两个方法哦,例如如果 传递的方法是 “name=lisi”,那么这个就会比配到包含name,也会比配到包含name但是值不等于zhangsan,所以会出错

value的占位符

  • 占位符和通配符有 “ * ”,“ ? ”,“ ** ”

     @Controller
     public class Controller_2 {
     	
     	@RequestMapping("/find.action")
     	public String method1() {
     		
     		System.out.println("find.action");
     		return "result";
     	}
     	
     	@RequestMapping("/find/id*.action")
     	public String method2() {
     		
     		System.out.println("find/id*.action");
     		return "result";
     	}
     	
     	@RequestMapping("/find/id?.action")
     	public String method3() {
     		
     		System.out.println("find/id?.action");
     		return "result";
     	}
     	
     	@RequestMapping("/find/id/*.action")
     	public String method6() {
     		
     		System.out.println("find/id/*.action");
     		return "result";
     	}
     	
     	@RequestMapping("/find/id/**/id.action")
     	public String method7() {
     		
     		System.out.println("find/id/**/id.action");
     		return "result";
     	}
     }
    
     	<a href="find.action">find.action</a><br>
     	<a href="find/id.action">find/id.action</a><br>
     	<a href="find/ida.action">find/ida.action</a><br>
     	<a href="find/id1.action">find/id1.action</a><br>
     	<a href="find/idaa.action">find/idaa.action</a><br>
     	<a href="find/id/idd.action">find/id/idd.action</a><br>
     	<a href="find/id/idd/id.action">find/id/idd/id.action</a><br>
    

以下是输出:
find4
find/id*.action
find/id?.action
find/id?.action
find/id*.action
find/id/*.action
find/id/**/id.action

  • 这里可以看出“ ** ”是比配任何路径
  • 注意这里最后是以/id结尾的哦,这个不能错了
  • ?只是一个符号的占位符

value的正则表达式以及或关系

@Controller
public class Controller_3 {

	@RequestMapping(value= {"/get.action","/get/py.action"})
	public String get() {
		System.out.println("帅帅哒");
		return "result";
	}
	
	@RequestMapping("/get/{num:\\d{3}}-{text:[a-z]{3}}.action")
	public String get520(@PathVariable String num,@PathVariable String text) {
		System.out.println(num+text);
		return "result";
	}
	
	@RequestMapping("/get/{type}.action")
	public String Manger(@PathVariable String type) {
		System.out.println(type);
		return "result";
	}
}

<a href="get.action">get</a><br>
<a href="get/py.action">get/py</a><br>
<a href="get/520-you.action">get/520-you</a><br>
  • 这里很容易看出或关系的作用,就是两个路径都可以访问同一个请求
  • {type}参数是一个类型,我们可以直接打印,一般用于增删改之类的,前缀一样
  • 正则表达式,这里也很简单,同时我们还可以打印
  • /{num:\\d{3}}-{text:[a-z]{3}}这个的意思就是 至少3个数字,然后这个值的名字是num;[a-z]是至少三个字母,名字是text,然后就可以对应打印了

猜你喜欢

转载自blog.csdn.net/qq_37871033/article/details/86907854