@PathVariable中有特殊字符如何处理?

上代码:


	@GetMapping(value="/user/{useraccount}")
	public void getUserAccount(@PathVariable("useraccount") String userAccount) {
				
		logger.info("useraccount :" + userAccount);
    }
        

 

正常访问:

/user/zhangsan

打印:useraccount : zhangsan

看似一切正常

but:

访问:/user/zhangsan/lisi

打印:useraccount : zhangsan

咦,为啥不是useraccount :zhangsan/lisi  ?

@PathVariable并没有我们想象的聪明,对于参数中的/并不能跟实际路径/分开

事实上,有. ; -等都不能正确切分。

怎么办呢?

两种方案:

1,简单点,直接使用@RequestParam代替


	@GetMapping(value="/user")
	public void getUserAccount(@RequestParam("useraccount") String userAccount) {
				
		logger.info("useraccount :" + userAccount);
    }
        

用/user?useraccount=zhangsan 访问

2,使用正则过滤


	@GetMapping(value="/user/{useraccount:[a-zA-Z0-9\\.\\-\\_\\;\\\]+}")
	public void getUserAccount(@PathVariable("useraccount") String userAccount) {
				
		logger.info("useraccount :" + userAccount);
    }
        

正常访问:

/user/zhangsan

打印:useraccount : zhangsan

当然,这个就有点不灵活了,第一种简单又方便

 

@PathVariable中有特殊字符如何处理?_第1张图片@PathVariable中有特殊字符如何处理?_第2张图片

你可能感兴趣的:(spring)