⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rollersession.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
package org.roller.presentation;import org.apache.commons.collections.ArrayStack;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;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 java.io.Serializable;///////////////////////////////////////////////////////////////////////////////** * Roller session handles session startup and shutdown. * @web.listener */public class RollerSession    implements HttpSessionListener, HttpSessionActivationListener, Serializable{    // Although we have no actual members, we implement Serializable to meet expectations of    // session attributes for some container configurations.    static final long serialVersionUID = 5890132909166913727L;    private static Log mLogger =        LogFactory.getFactory().getInstance(RollerSession.class);    public static final String ROLLER_SESSION = "org.roller.rollersession";    public static final String BREADCRUMB = "org.roller.breadcrumb";    public static final String ERROR_MESSAGE   = "rollererror_message";    public static final String STATUS_MESSAGE  = "rollerstatus_message";    //------------------------------------------------------------------------    /** Create session's Roller instance */    public void sessionCreated(HttpSessionEvent se)    {        // put this in session, so that we get HttpSessionActivationListener callbacks        se.getSession().setAttribute( ROLLER_SESSION, this );                RollerContext rctx = RollerContext.getRollerContext(            se.getSession().getServletContext());        rctx.sessionCreated(se);               }        //------------------------------------------------------------------------    public void sessionDestroyed(HttpSessionEvent se)    {        RollerContext rctx = RollerContext.getRollerContext(            se.getSession().getServletContext());        rctx.sessionDestroyed(se);                           clearSession(se);            }    //------------------------------------------------------------------------    /** Init session as if it was new */    public void sessionDidActivate(HttpSessionEvent se)    {    }    //------------------------------------------------------------------------    /**     * Clear bread crumb trail.     * @param req the request     */    public static void clearBreadCrumbTrail( HttpServletRequest req )    {         HttpSession ses = req.getSession(false);        if (ses != null && ses.getAttribute(BREADCRUMB) != null)        {            ArrayStack stack = (ArrayStack)ses.getAttribute(BREADCRUMB);            stack.clear();        }    }        //------------------------------------------------------------------------    /**     * Store the url of the latest request stored in the session.     * @param useReferer If true try to return the "referer" header.     */    public static String getBreadCrumb(         HttpServletRequest req, boolean useReferer )    {        String crumb = null;                HttpSession ses = req.getSession(false);        if (ses != null && ses.getAttribute(BREADCRUMB) != null)        {            ArrayStack stack = (ArrayStack) ses.getAttribute(BREADCRUMB);            if (stack != null && !stack.empty())            {                crumb = (String)stack.peek();            }        }        if ( crumb == null && useReferer )        {            crumb = req.getHeader("referer");        }                return crumb;    }        //------------------------------------------------------------------------    /**     * Store the url of the latest request stored in the session.     * Else try to return the "referer" header.     */    public static String getBreadCrumb( HttpServletRequest req )    {        return getBreadCrumb(req,true);    }    //------------------------------------------------------------------------    /** Purge session before passivation. Because Roller currently does not      * support session recovery, failover, migration, or whatever you want      * to call it when sessions are saved and then restored at some later      * point in time.      */    public void sessionWillPassivate(HttpSessionEvent se)    {        clearSession(se);    }    //------------------------------------------------------------------------    /*    private  void clearSession( HttpSessionEvent se )    {        HttpSession session = se.getSession();        try        {            session.removeAttribute( BREADCRUMB );        }        catch (Throwable e)        {            if (mLogger.isDebugEnabled())            {                // ignore purge exceptions                mLogger.debug("EXCEPTION PURGING session attributes",e);            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -