linlinyu

          linlinyu
          posts - 0, comments - 4, trackbacks - 0, articles - 15

          ServletContextListener和HttpSessionListener 應用

          Posted on 2007-11-25 21:23 linlin yu 閱讀(1035) 評論(0)  編輯  收藏 所屬分類: servlet
          1,ServletContextListener
          package com.soyoung.xxx.util;

          import java.util.Properties;

          import javax.servlet.ServletContext;
          import javax.servlet.ServletContextEvent;
          import javax.servlet.ServletContextListener;
          import javax.servlet.http.HttpSessionEvent;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;

          import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;

          /**
           * 
           * 
          @author linlinyu
           * 
          @version 1.0
           * @web.listener
           
          */

          public class XXXContext implements ServletContextListener {
              
          private String mVersion = null;

              
          private String mBuildTime = null;

              
          private String mBuildUser = null;

              
          public static final String XXX_CONTEXT = "xxxContext";

              
          private static String version_config = "/version.properties";

              
          private static ServletContext mContext = null;

              
          private static Log mLogger = LogFactory.getLog(XXXContext.class);

              
          private final SynchronizedInt mSessionCount = new SynchronizedInt(0);

              
          public String getBuildTime() {
                  
          return mBuildTime;
              }


              
          public String getBuildUser() {
                  
          return mBuildUser;
              }


              
          public String getVersion() {
                  
          return mVersion;
              }


              
          public XXXContext() {
                  
          super();

                  Properties props 
          = new Properties();
                  
          try {
                      props.load(getClass().getResourceAsStream(version_config));
                  }
           catch (Exception e) {
                      mLogger.error(
          "version.properties not found", e);
                  }


                  mVersion 
          = props.getProperty("xxx.version""UNKNOWN");
                  mBuildTime 
          = props.getProperty("xxx.buildTime""UNKNOWN");
                  mBuildUser 
          = props.getProperty("xxx.buildUser""UNKNOWN");

              }


              
          public static XXXContext getXXXContextt() {
                  ServletContext sc 
          = XXXContext.getServletContext();
                  
          return (XXXContext) sc.getAttribute(XXX_CONTEXT);
              }


              
          public static ServletContext getServletContext() {
                  
          return mContext;
              }


              
          public void contextDestroyed(ServletContextEvent arg0) {
                  
          // TODO Auto-generated method stub

              }


              
          public void contextInitialized(ServletContextEvent sce) {
                  mContext 
          = sce.getServletContext();
                  mContext.setAttribute(XXX_CONTEXT, 
          this);
              }


              
          public void sessionCreated(HttpSessionEvent se) {
                  mSessionCount.increment();

                  mLogger.debug(
          "sessions=" + mSessionCount + ":freemem="
                          
          + Runtime.getRuntime().freeMemory() + ":totmem="
                          
          + Runtime.getRuntime().totalMemory());
              }


              
          public void sessionDestroyed(HttpSessionEvent se) {
                  mSessionCount.decrement();

                  mLogger.debug(
          "sessions=" + mSessionCount + ":freemem="
                          
          + Runtime.getRuntime().freeMemory() + ":totalmem="
                          
          + Runtime.getRuntime().totalMemory());
              }


              
          public int getSessionCount() {
                  
          return mSessionCount.complement();
              }

          }


          2,HttpSessionListener
          package com.soyoung.xxx.util;

          import java.io.Serializable;
          import java.security.Principal;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpSession;
          import javax.servlet.http.HttpSessionActivationListener;
          import javax.servlet.http.HttpSessionEvent;
          import javax.servlet.http.HttpSessionListener;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;

          /**
           * 
           * 
          @author linlinyu
           * 
          @version 1.0
           * @web.listener
           * 
           
          */

          public class XXXSession implements HttpSessionListener,
                  HttpSessionActivationListener, Serializable 
          {
              
          public static final String XXX_SESSION = "com.soyoung.xxx.XXXSession";

              
          private Object userData = null;

              
          private HttpSession httpSession = null;

              
          private static Log mLogger = LogFactory.getFactory().getInstance(
                      XXXSession.
          class);

              
          public static XXXSession getXXXSession(HttpServletRequest request) {
                  XXXSession xxxSession 
          = null;
                  HttpSession session 
          = request.getSession(false);
                  
          if (xxxSession == null{
                      xxxSession 
          = new XXXSession();
                      session.setAttribute(XXX_SESSION, xxxSession);
                  }

                  Principal principal 
          = request.getUserPrincipal();
                  
          if (xxxSession.getUserData() == null && principal != null{
                      
          // Object user = findUserByName(principal);
                      
          // if(user != null){
                      
          // xxxSession.setUserData(user);
                      
          // }
                  }


                  
          return xxxSession;

              }


              
          public Object getSessionAttribute(String atrribue) {
                  
          return httpSession.getAttribute(atrribue);
              }


              
          public void sessionCreated(HttpSessionEvent se) {
                  XXXSession xxxSession 
          = new XXXSession();
                  xxxSession.setHttpSession(se.getSession());
                  se.getSession().setAttribute(XXX_SESSION, xxxSession);
                  XXXContext ctx 
          = XXXContext.getXXXContextt();
                  ctx.sessionCreated(se);
              }


              
          public void sessionDestroyed(HttpSessionEvent se) {
                  XXXContext ctx 
          = XXXContext.getXXXContextt();
                  ctx.sessionDestroyed(se);
                  clearSession(se);
              }


              
          public void sessionDidActivate(HttpSessionEvent arg0) {

              }


              
          public void sessionWillPassivate(HttpSessionEvent se) {
                  clearSession(se);

              }


              
          private void clearSession(HttpSessionEvent se) {
                  HttpSession session 
          = se.getSession();
                  
          try {
                      session.removeAttribute(XXX_SESSION);
                  }
           catch (Throwable e) {
                      
          if (mLogger.isDebugEnabled()) {
                          
          // ignore purge exceptions
                          mLogger.debug("EXCEPTION PURGING session attributes", e);
                      }

                  }

              }


              
          public Object getUserData() {
                  
          return userData;
              }


              
          public void setUserData(Object userData) {
                  
          this.userData = userData;
              }


              
          public HttpSession getHttpSession() {
                  
          return httpSession;
              }


              
          public void setHttpSession(HttpSession httpSession) {
                  
          this.httpSession = httpSession;
              }


          }

          主站蜘蛛池模板: 林州市| 内江市| 辽阳市| 石渠县| 马龙县| 岳阳市| 讷河市| 宣恩县| 峡江县| 泰安市| 安宁市| 社会| 全椒县| 耒阳市| 布尔津县| 孝义市| 晋中市| 右玉县| 盘山县| 东平县| 东光县| 永安市| 三河市| 武定县| 衡东县| 肃宁县| 灵川县| 武宁县| 错那县| 孟津县| 永和县| 湖北省| 威宁| 浏阳市| 合水县| 汤原县| 桐梓县| 南开区| 汝州市| 凤翔县| 英吉沙县|