net.lightbody.bmp.proxy.jetty.servlet.SessionDump.java Source code

Java tutorial

Introduction

Here is the source code for net.lightbody.bmp.proxy.jetty.servlet.SessionDump.java

Source

// ========================================================================
// $Id: SessionDump.java,v 1.15 2005/08/13 00:01:28 gregwilkins Exp $
// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at 
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================

package net.lightbody.bmp.proxy.jetty.servlet;

import net.lightbody.bmp.proxy.jetty.html.Page;
import net.lightbody.bmp.proxy.jetty.html.TableForm;
import net.lightbody.bmp.proxy.jetty.log.LogFactory;
import net.lightbody.bmp.proxy.jetty.util.LogSupport;
import org.apache.commons.logging.Log;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.Writer;
import java.util.Date;
import java.util.Enumeration;

/* ------------------------------------------------------------ */
/** Test Servlet Sessions.
 *
 * @version $Revision: 1.15 $
 * @author Greg Wilkins (gregw)
 */
public class SessionDump extends HttpServlet {
    private static Log log = LogFactory.getLog(SessionDump.class);

    int redirectCount = 0;
    /* ------------------------------------------------------------ */
    String pageType;

    /* ------------------------------------------------------------ */
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    /* ------------------------------------------------------------ */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(false);
        String action = request.getParameter("Action");
        String name = request.getParameter("Name");
        String value = request.getParameter("Value");
        String age = request.getParameter("MaxAge");

        String nextUrl = getURI(request) + "?R=" + redirectCount++;
        if (action.equals("New Session")) {
            session = request.getSession(true);
        } else if (session != null) {
            if (action.equals("Invalidate"))
                session.invalidate();
            else if (action.equals("Set")) {
                session.setAttribute(name, value);
                try {
                    int m = Integer.parseInt(age);
                    session.setMaxInactiveInterval(m);
                } catch (Exception e) {
                    LogSupport.ignore(log, e);
                }
            } else if (action.equals("Remove"))
                session.removeAttribute(name);
        }

        String encodedUrl = response.encodeRedirectURL(nextUrl);
        response.sendRedirect(encodedUrl);

    }

    /* ------------------------------------------------------------ */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        Page page = new Page();

        HttpSession session = request.getSession(getURI(request).indexOf("new") > 0);

        page.title("Session Dump Servlet: ");

        TableForm tf = new TableForm(response.encodeURL(getURI(request)));
        tf.method("POST");

        if (session == null) {
            page.add("<H1>No Session</H1>");
            tf.addButton("Action", "New Session");
        } else {
            try {
                tf.addText("ID", session.getId());
                tf.addText("State", session.isNew() ? "NEW" : "Valid");
                tf.addText("Creation", new Date(session.getCreationTime()).toString());
                tf.addText("Last Access", new Date(session.getLastAccessedTime()).toString());
                tf.addText("Max Inactive", "" + session.getMaxInactiveInterval());

                tf.addText("Context", "" + session.getServletContext());

                Enumeration keys = session.getAttributeNames();
                while (keys.hasMoreElements()) {
                    String name = (String) keys.nextElement();
                    String value = session.getAttribute(name).toString();
                    tf.addText(name, value);
                }

                tf.addTextField("Name", "Property Name", 20, "name");
                tf.addTextField("Value", "Property Value", 20, "value");
                tf.addTextField("MaxAge", "MaxAge(s)", 5, "");
                tf.addButtonArea();
                tf.addButton("Action", "Set");
                tf.addButton("Action", "Remove");
                tf.addButton("Action", "Invalidate");

                page.add(tf);
                tf = null;
                if (request.isRequestedSessionIdFromCookie())
                    page.add("<P>Turn off cookies in your browser to try url encoding<BR>");

                if (request.isRequestedSessionIdFromURL())
                    page.add("<P>Turn on cookies in your browser to try cookie encoding<BR>");

            } catch (IllegalStateException e) {
                log.debug(LogSupport.EXCEPTION, e);
                page.add("<H1>INVALID Session</H1>");
                tf = new TableForm(getURI(request));
                tf.addButton("Action", "New Session");
            }
        }

        if (tf != null)
            page.add(tf);

        Writer writer = response.getWriter();
        page.write(writer);
        writer.flush();
    }

    /* ------------------------------------------------------------ */
    public String getServletInfo() {
        return "Session Dump Servlet";
    }

    /* ------------------------------------------------------------ */
    private String getURI(HttpServletRequest request) {
        String uri = (String) request.getAttribute("javax.servlet.forward.request_uri");
        if (uri == null)
            uri = request.getRequestURI();
        return uri;
    }

}