問題背景
具體因公司作的業(yè)務(wù)需求,需要將原來的form表單進行驗簽,之前比如登錄是
www.abc.com/System/user/login?name=tom&pwd=123
現(xiàn)在都需要該改成以下形式
www.abc.com/System/user/login?param={"name":"tom","pwd":"123"}&sign=202cb962ac59075b964b07152d234b70
但是呢,我發(fā)現(xiàn)之前這套后臺的開發(fā)者直接是在Controller中是直接這樣實現(xiàn)的:
@Controller
@RequestMapping("user")
@ResponseBody
public class SmsVerifyCodeController {
@Autowired
private ShortMessageService messageService;
@RequestMapping(value = "login")
public ResponseVo sendSmsCode(String name, String pwd) {
Log.d(name);
Log.d(pwd);
}
}
在Controller業(yè)務(wù)中,以上代碼不能直接取到param里面的name和pwd值,只能取到param的String值,然后用JsonObject.getString("name")的方法來取值,但是有很多業(yè)務(wù)的Controller,這樣寫起來也不方便啊。然后我就想到了用HandlerMethodArgumentResolver來實現(xiàn)。
其實我完全可以不用把之前的form的業(yè)務(wù)數(shù)據(jù)封裝成JSON的,但是我這個人就是比較固執(zhí),還有就是業(yè)務(wù)上面需要對JSON格式的數(shù)據(jù)進行驗簽(其實我完全可以把每個Key對應(yīng)的Value值拼接起來加上Salt值驗簽,只不過這樣對于客戶端調(diào)試不方便,所以就想了一套比較笨的方法吧),好吧既然糾結(jié)過了,我們就直接開搞吧。