夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          異常攔截器:
          package org.roadway.lm.util;

          import org.apache.log4j.Logger;

          import com.opensymphony.xwork2.ActionInvocation;
          import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

          /**
           * 
          @author Huyvanpull
           * 
           
          */
          @SuppressWarnings(
          "serial")
          public class ExceptionInterceptor extends AbstractInterceptor
          {
              
          private Logger logger = Logger.getLogger(ExceptionInterceptor.class);
              
              
          private String interceptorName;
              
              @Override
              
          public String intercept(ActionInvocation invocation) throws Exception
              {
                  
          this.logger.debug("進入" + this.getInterceptorName());
                  String result 
          = null;
                  
          try
                  {
                      result 
          = invocation.invoke();
                  }
                  
          catch (Exception exception)
                  {
                      
          this.logger.error(this.getExceptionInfo(exception));
                      
          throw exception;
                  }
                  
          return result;
              }
              
              
          private String getExceptionInfo(Exception exception)
              {
                  StringBuffer bExceptionInfo 
          = new StringBuffer();
                  bExceptionInfo.append(exception.toString());
                  bExceptionInfo.append(
          "\n\t");
                  
                  StackTraceElement[] stackTraceElements 
          = exception.getStackTrace();
                  
          for (int i = 0; i < stackTraceElements.length; i++)
                  {
                      bExceptionInfo.append(
          "[" + this.getInterceptorName() + ""
                              
          + stackTraceElements[i].toString() + "\n\t");
                  }
                  
          return bExceptionInfo.toString();
              }
              
              
          public String getInterceptorName()
              {
                  
          return interceptorName;
              }
              
              
          public void setInterceptorName(String interceptorName)
              {
                  
          this.interceptorName = interceptorName;
              }
              
          }

          登陸檢查攔截器:
          package org.roadway.lm.util;

          import java.util.Map;

          import org.apache.log4j.Logger;
          import org.roadway.lm.po.UserInfo;
          import org.roadway.lm.user.action.UserInfoAction;

          import com.opensymphony.xwork2.Action;
          import com.opensymphony.xwork2.ActionInvocation;
          import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

          /**
           * 
          @author tom_hui
           * 
           
          */
          @SuppressWarnings(
          "serial")
          public class LoginCheckerInterceptor extends AbstractInterceptor
          {
              
          private String userSessionKey = "userInfo";
              
              
          private String isCheckLogin   = "true";
              
              
          private Logger logger         = Logger
                                                    .getLogger(LoginCheckerInterceptor.
          class);
              
              @SuppressWarnings(
          "unchecked")
              
          public String intercept(ActionInvocation actionInvocation) throws Exception
              {
                  Object action 
          = actionInvocation.getAction();
                  
                  
          /** 如果設置攔截器不檢查登陸 */
                  
          if ("false".equalsIgnoreCase(isCheckLogin))
                  {
                      actionInvocation.invoke();
                  }
                  
          /** 如果是登陸Action,放其通行 */
                  
          if (action instanceof UserInfoAction)
                  {
                      
          this.logger.info("登陸Action:" + UserInfoAction.class.getName());
                      
          return actionInvocation.invoke();
                  }
                  
                  
          /** 從session中得到UserInfo的信息 */
                  Map session 
          = actionInvocation.getInvocationContext().getSession();
                  UserInfo userInfo 
          = (UserInfo) session.get(userSessionKey);
                  
                  
          /** 如果Session中存在UserInfo對象 */
                  
          if (userInfo != null)
                  {
                      
          this.logger.info("用戶" + userInfo.getUserName() + "("
                              
          + userInfo.getUserId() + ")登陸了.");
                      
          return actionInvocation.invoke();
                      
                  }
                  
          /** 如果沒有登陸 */
                  
          else
                  {
                      
          return Action.LOGIN;
                  }
              }
              
              
          public String getUserSessionKey()
              {
                  
          return userSessionKey;
              }
              
              
          public void setUserSessionKey(String userSessionKey)
              {
                  
          this.userSessionKey = userSessionKey;
              }
              
              
          public String getIsCheckLogin()
              {
                  
          return isCheckLogin;
              }
              
              
          public void setIsCheckLogin(String isCheckLogin)
              {
                  
          this.isCheckLogin = isCheckLogin;
              }
              
          }


          posted on 2008-10-28 09:26 HUIKK 閱讀(1778) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 左贡县| 陆川县| 临泉县| 斗六市| 灵寿县| 子洲县| 屏南县| 北流市| 犍为县| 聂荣县| 皮山县| 西贡区| 措勤县| 岑巩县| 新丰县| 扬州市| 奉贤区| 称多县| 广水市| 汕尾市| 乌海市| 尚义县| 宁强县| 临邑县| 那曲县| 宁阳县| 萨迦县| 平定县| 临湘市| 沙湾县| 双辽市| 周口市| 峨边| 涿鹿县| 丽水市| 孟津县| 淮阳县| 博罗县| 新邵县| 芜湖县| 晋城|