BaseAction的缓冲封装

在baseAction中对数据进行get和set方法,然后在一个拦截器中,将有效数据进行封转。封转到数据sessionUserVO里面,在拦截器里面吧数据进行封转然后放入缓冲中,供action调用。这种方法减少里数据的调用的次数,action寻找有效的参数更加方便。

 

public String returnCode="";
 /** 返回信息 */
 public String returnMsg="";
 /** 用户ID **/
 public long userId=0;
 /** 用户名 */
 public String userName="";
 /** 用户token **/
 public String userToken="";
 /** 用户VO*/
 public SessionUserVO sessionUserVO;

 

get和set方法

 

在拦截器里面进行数据的封装

public String intercept(ActionInvocation invocation) throws Exception {
  
  Action action = (Action) invocation.getAction();
  if (action instanceof BaseAction) {
   BaseAction baseAction = (BaseAction) action;
   long userId=  baseAction.getUserId();
   String userToken = baseAction.getUserToken();
   if (userId == 0 || userToken == null || userToken.equals("")) {
    return AuthorConstant.INVALID_LOGIN;
   }
   SessionUserVO sessionUser = (SessionUserVO) MemcacheUtil.getSessionObject(String.valueOf(userId));
   if (sessionUser != null && !sessionUser.getUserToken().equals(userToken)) {
    return AuthorConstant.INVALID_LOGIN;
   }
   if (sessionUser == null) {
    User user = userDao.getUser(userId,userToken);
    if (user == null) {
     return AuthorConstant.INVALID_LOGIN;
    }
    sessionUser = new SessionUserVO();
    sessionUser.setUserId(user.getUserId());
    sessionUser.setUserName(user.getUserName());
    sessionUser.setUserToken(user.getUserToken());
    sessionUser.setLoginTime(user.getLoginTim());
    sessionUser.setOnlineTime(user.getOnlineTime());
    sessionUser.setTotalInfullNum(user.getTotalInfullNum());
    SessionUtil.setMemcachedUser(sessionUser);
   }
   baseAction.setUserName(sessionUser.getUserName());
   baseAction.setSessionUserVO(sessionUser);
  }
  return invocation.invoke();

 

 

 

 

 

你可能感兴趣的:(action)