1, define the annotation name interface
/** * Use this note without MD5 conversion * @author */@Target (elementtype.parameter) @Retention (retentionpolicy.runtime) @Documented public @Interface Password { default "Password";}
2, implement Handlermethodargumentresolver interface
Public classPasswordannotationresolverImplementsHandlermethodargumentresolver {@Override Public Booleansupportsparameter (methodparameter parameter) {returnParameter.getparameterannotation (Password.class) !=NULL; } @Override PublicObject resolveargument (methodparameter parameter, Modelandviewcontainer mavcontainer, Nativewebrequest web Request, webdatabinderfactory binderfactory)throwsException {httpservletrequest request=(HttpServletRequest) webRequest. Getnativerequest (); Password Passwordanno=parameter. Getparameterannotation (Password.class); String Password=Request.getparameter (Passwordanno.value ()); returnmd5util.md5 (password); }}
3, custom note driver registration
<> <mvc:argument-resolvers> < class = "xxx.xxxx.xxxx.PasswordAnnotationResolver"/> </ mvc:argument-resolvers > </ Mvc:annotation-driven >
4, using
Public map<string, object> login (httpservletrequest request,//@RequestParam ("username") String username,// @Password String Password,//custom annotations. At this point the password is already encrypted @RequestParam ("Randcheckcode") String randcheckcode) { //judgment Logic }
Spring MVC custom Annotations--Password encryption annotations at login