[jboss-user] [JBoss Portal] - HttpServletRequest, HttpServletResponse, Session, Cookie fro

Antoine_h do-not-reply at jboss.com
Fri Mar 16 08:54:42 EDT 2007


Here some code to get and use the HttpServletRequest, HttpServletResponse, HttpSession, read and write Cookies from a PortletRequest (in processAction method or doView).

This is not compliant with JSR-168. And is "as is", and may not work.


  | import java.util.logging.Logger;
  | 
  | import javax.portlet.PortletRequest;
  | import javax.servlet.http.Cookie;
  | import javax.servlet.http.HttpServletRequest;
  | import javax.servlet.http.HttpServletResponse;
  | 
  | import org.jboss.portal.portlet.aspects.portlet.ContextDispatcherInterceptor;
  | import org.jboss.portal.portlet.impl.spi.AbstractInvocationContext;
  | import org.jboss.portal.portlet.invocation.PortletInvocation;
  | import org.jboss.portal.portlet.spi.InvocationContext;
  | 
  | /**
  |  * A class to help manage the HttpServletRequest and Session of the portal.
  |  * 
  |  */
  | public class HttpServletRequestHelper {
  | 	private static final Logger log = Logger
  | 			.getLogger(HttpServletRequestHelper.class.getName());
  | 
  | 	
  | 	/***************************************************************************
  | 	 * For getting and using the HttpServletRequest and HttpServletResponse.
  | 	 **************************************************************************/
  | 	/**
  | 	 * This method retieve the {@link HttpServletRequest} from the
  | 	 * {@link PortletRequest}. It call first the
  | 	 * {@link #getAbstractInvocationContext(PortletRequest, String)} to get the
  | 	 * {@link AbstractInvocationContext}, then retrive the HttpServletRequest
  | 	 * from it.
  | 	 * 
  | 	 * <p>
  | 	 * See the code for details of how it retrieves it.
  | 	 * </p>
  | 	 * 
  | 	 * @param request
  | 	 *            The PortletRequest.
  | 	 * @param msgLogPrefix
  | 	 *            The message prefix for all log, to tell from where this
  | 	 *            helping method was called.
  | 	 * @return
  | 	 */
  | 	public static final HttpServletRequest getHttpServletRequest(
  | 			PortletRequest request, String msgLogPrefix) {
  | 		// Try to cast the context of invocation to an AbstractInvocationContext
  | 		AbstractInvocationContext abstractInvCtxt = getAbstractInvocationContext(
  | 				request, msgLogPrefix);
  | 		HttpServletRequest httpServletRequest = null;
  | 		if (abstractInvCtxt != null) {
  | 			// The AbstractInvocationContext exists : try to retrieve the client
  | 			// httpServletRequest.
  | 			httpServletRequest = abstractInvCtxt.getClientRequest();
  | 			if (httpServletRequest == null) {
  | 				log.warning(msgLogPrefix + " The HttpServletRequest is null !");
  | 			}
  | 		} else {
  | 			log.warning(msgLogPrefix
  | 					+ " The AbstractInvocationContext is null !");
  | 		}
  | 		return httpServletRequest;
  | 	}
  | 
  | 	/**
  | 	 * This method retieve the {@link HttpServletRequest} from the
  | 	 * {@link PortletRequest}. It call first the
  | 	 * {@link #getAbstractInvocationContext(PortletRequest, String)} to get the
  | 	 * {@link AbstractInvocationContext}, then retrive the HttpServletResponse
  | 	 * from it.
  | 	 * 
  | 	 * <p>
  | 	 * See the code for details of how it retrieves it.
  | 	 * </p>
  | 	 * 
  | 	 * @param request
  | 	 *            The PortletRequest.
  | 	 * @param msgLogPrefix
  | 	 *            The message prefix for all log, to tell from where this
  | 	 *            helping method was called.
  | 	 * @return
  | 	 */
  | 	public static final HttpServletResponse getHttpServletResponse(
  | 			PortletRequest request, String msgLogPrefix) {
  | 		// Try to cast the context of invocation to an AbstractInvocationContext
  | 		AbstractInvocationContext abstractInvCtxt = getAbstractInvocationContext(
  | 				request, msgLogPrefix);
  | 		HttpServletResponse httpServletResponse = null;
  | 		if (abstractInvCtxt != null) {
  | 			// The AbstractInvocationContext exists : try to retrieve the client
  | 			// httpServletRequest.
  | 			httpServletResponse = abstractInvCtxt.getClientResponse();
  | 			if (httpServletResponse == null) {
  | 				log
  | 						.warning(msgLogPrefix
  | 								+ " The HttpServletResponse is null !");
  | 			}
  | 		} else {
  | 			log.warning(msgLogPrefix
  | 					+ " The AbstractInvocationContext is null !");
  | 		}
  | 		return httpServletResponse;
  | 	}
  | 
  | 	/**
  | 	 * This method retieve the {@link AbstractInvocationContext} from the
  | 	 * {@link PortletRequest}. The {@link AbstractInvocationContext} is used to
  | 	 * get the ClientRequest etc...
  | 	 * <p>
  | 	 * See the code for details of how it retrieves it.
  | 	 * </p>
  | 	 * 
  | 	 * @param request
  | 	 *            The PortletRequest.
  | 	 * @param msgLogPrefix
  | 	 *            The message prefix for all log, to tell from where this
  | 	 *            helping method was called.
  | 	 * @return
  | 	 */
  | 	public static final AbstractInvocationContext getAbstractInvocationContext(
  | 			PortletRequest request, String msgLogPrefix) {
  | 		PortletInvocation portletInvocation = (PortletInvocation) request
  | 				.getAttribute(ContextDispatcherInterceptor.REQ_ATT_COMPONENT_INVOCATION);
  | 		// return portletInvocation.getDispatchedRequest();
  | 
  | 		// Get the context of the invocation
  | 		InvocationContext invocationContext = portletInvocation.getContext();
  | 
  | 		// Try to cast the context of invocation to an AbstractInvocationContext
  | 		AbstractInvocationContext abstractInvCtxt = null;
  | 		if (invocationContext != null) {
  | 			if (invocationContext instanceof AbstractInvocationContext) {
  | 				abstractInvCtxt = (AbstractInvocationContext) invocationContext;
  | 			} else {
  | 				log
  | 						.warning(msgLogPrefix
  | 								+ " The InvocationContext is not of instance of AbstractInvocationContext !");
  | 				log.warning(msgLogPrefix + " The InvocationContext is : "
  | 						+ invocationContext + " // "
  | 						+ invocationContext.getClass().getName() + " // "
  | 						+ invocationContext.toString());
  | 			}
  | 
  | 		} else {
  | 			log.warning(msgLogPrefix + " The invocationContext is null !");
  | 		}
  | 		return abstractInvCtxt;
  | 	}
  | 	/***************************************************************************
  | 	 * End of For getting and using the HttpServletRequest and
  | 	 * HttpServletResponse.
  | 	 **************************************************************************/
  | 	/***************************************************************************
  | 	 *  Set and retrieve a Cookie
  | 	 **************************************************************************/
  | 	/**
  | 	 * Return the cookie with name cookieName, from the
  | 	 * {@link HttpServletRequest}, or null if not found. Does not check for the path
  | 	 * 
  | 	 * @param httpRequest
  | 	 * @param cookieName
  | 	 *            The name of the cookie to look for
  | 	 * @param msgLogPrefix
  | 	 *            The message prefix for all log, to tell from where this
  | 	 *            helping method was called.
  | 	 * @return The cookie, or null if not found.
  | 	 */
  | 	public static Cookie getCookie(HttpServletRequest httpRequest,
  | 			String cookieName, String cookiePath, String msgLogPrefix) {
  | 		Cookie cookieRet = null;
  | 		Cookie[] cookieTab = httpRequest.getCookies();
  | 
  | 		// log.warning(msgLogPrefix + " The list of cookies :"
  | 		// + msgCookieListAsString(cookieTab));
  | 
  | 		if (cookieTab != null) {
  | 			for (int i = 0; i < cookieTab.length; i++) {
  | 				if (cookieTab.getName().compareTo(cookieName) == 0) {
  | 					// log.warning(msgLogPrefix + " i = " + i
  | 					// + " same name cookieTab.getName()="
  | 					// + cookieTab.getName());
  | 					// log.warning(msgLogPrefix + " i = " + i
  | 					// + " PATH cookieTab.getPath()="
  | 					// + cookieTab.getPath());
  | 
  | 						cookieRet = cookieTab;
  | 						break;
  | 				}
  | 			}
  | 			// } else {
  | 			// log
  | 			// .warning(msgLogPrefix
  | 			// + " The List of cookies is null. From HttpServletRequest :
  | 			// LocalAddr="
  | 			// + httpRequest.getLocalAddr() + ", and LocalName="
  | 			// + httpRequest.getLocalName() + ", and user="
  | 			// + httpRequest.getRemoteUser());
  | 		}
  | 		return cookieRet;
  | 	}
  | 
  | 	/**
  | 	 * Store a cookie.
  | 	 * 
  | 	 * @param httpResponse
  | 	 * @param cookieName
  | 	 * @param cookiePath
  | 	 * @param cookieValue
  | 	 * @param maxAgeSeconds
  | 	 *            The cookie will expire after that many seconds have passed.
  | 	 *            See {@link Cookie#setMaxAge(int)}. One year = 60*60*24*365 =
  | 	 *            31536000 sec.
  | 	 * @param msgLogPrefix
  | 	 */
  | 	public static void storeCookie(HttpServletResponse httpResponse,
  | 			String cookieName, String cookiePath, String cookieValue,
  | 			int maxAgeSeconds, String msgLogPrefix) {
  | 		Cookie cookie = new Cookie(cookieName, cookieValue);
  | 		cookie.setMaxAge(maxAgeSeconds); // one year = 60*60*24*365
  | 		// log.warning(msgLogPrefix + " cookie.setMaxAge = " +
  | 		// cookie.getMaxAge()
  | 		// + ", and LocalName=" + "");
  | 
  | 		cookie.setPath(cookiePath);
  | 
  | 		httpResponse.addCookie(cookie);
  | 	}
  | 
  | 	/**
  | 	 * Return the log message of a cookie : name, path, value, maxAge.
  | 	 * 
  | 	 * @param cookie
  | 	 * @return
  | 	 */
  | 	public static String msgCookieAsString(Cookie cookie) {
  | 		String msgRet = "Cookie[" + cookie.getName() + "], path=["
  | 				+ cookie.getPath() + "]" + ", value=" + cookie.getValue()
  | 				+ ", maxAge=" + cookie.getMaxAge() + ", domain="
  | 				+ cookie.getDomain() + "";
  | 		return msgRet;
  | 	}
  | 
  | 	/**
  | 	 * Return the log message of the list of cookie.
  | 	 * 
  | 	 * @param cookieTab
  | 	 * @return
  | 	 */
  | 	public static String msgCookieListAsString(Cookie[] cookieTab) {
  | 		String msgRet = null;
  | 		if (cookieTab == null) {
  | 			msgRet = "Cookie list is null !";
  | 			return msgRet;
  | 		} else {
  | 			msgRet = "Cookie list size=" + cookieTab.length;
  | 		}
  | 		for (int i = 0; i < cookieTab.length; i++) {
  | 			msgRet = msgRet + "\ni=" + i + ", "
  | 					+ msgCookieAsString(cookieTab);
  | 		}
  | 		return msgRet;
  | 	}
  | 
  | 	/***************************************************************************
  | 	 * End of Set and retrieve a Cookie
  | 	 **************************************************************************/
  | 
  | }
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4028767#4028767

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4028767



More information about the jboss-user mailing list