注解@ModelAttribute
@Target({ElementType.PARAMETER, ElementType.METHOD}) //可以看到注解ModelAttribute 可以在方法的参数和方法上面使用 @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ModelAttribute { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolean binding() default true; }
//被 @ModelAttribute 注释的方法会在Controller每个方法执行之前都执行,因此对于一个Controller中包含多个URL的时候,要谨慎使用
public class Attribute {
protected HttpServletResponse response;
protected HttpServletRequest request;
@ModelAttribute //请求过来先访问此方法 在访问getAttribute
public void setResponseAndReq(HttpServletRequest request, HttpServletResponse response, Model model,@RequestParam(value="userName",required=false) String userName) {
this.response = response;
this.request = request;
model.addAttribute("name",userName);
}
@RequestMapping(value = "/attribute",method = RequestMethod.POST)
public void getAttribute(ModelMap modelMap,String userName) {
System.out.println(modelMap.get("name"));
}
}
//可以声明一个BaseController 用来校验TOKEN 继承BaseController
public class BaseController {
/**
* request对象
*/
protected HttpServletRequest request;
/**
* response对象
*/
protected HttpServletResponse response;
@ModelAttribute //
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
}
/**
* 获取当前登录用户的ID
* @return
*/
public Long getUserId(){
String appToken = request.getHeader("token");
ChatToken chatToken=employeeService.getUserInfoByToken(appToken);
if(chatToken!=null){
return chatToken.getUserId();
}
return null;
}
/**
* 获取当前用户的token
* @return
*/
public String getToken(){
String appToken = request.getHeader("token");
return appToken;
}
/**
* 获取当前登录用户会话对象
* @return
*/
public boolean getChatToken(){
String appToken = request.getHeader("token");
// dosomething
return boolean;
}
}