HttpServletRequest from Seam
supernovasoftware.com May 6, 2006 3:14 PMIs it possible to directly access the HttpServletRequest in a bean.
For example I am now using a custom filter to add the follwing items to the request so that I can access them from Seam Components.
This currently works fine, but I am wondering if I can do away with this filter.
package pipetracker.web.servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class ExposeHttpServletRequestFilter implements Filter
{
private static final Log logger = LogFactory.getLog(ExposeHttpServletRequestFilter.class);
@SuppressWarnings("unused")
private ServletContext servletContext;
public void destroy()
{
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
addRemoteUser(httpServletRequest);
addBasePath(httpServletRequest);
try
{
chain.doFilter(request, response);
} catch (Exception e)
{
logger.error("ended request due to exception", e);
throw new ServletException(e);
} finally
{
logger.debug("ended request");
}
}
public void init(FilterConfig config) throws ServletException
{
servletContext = config.getServletContext();
}
private void addRemoteUser(HttpServletRequest httpServletRequest)
{
logger.info(httpServletRequest.getRemoteUser());
httpServletRequest.setAttribute("remoteUsr", httpServletRequest.getRemoteUser());
}
private void addBasePath(HttpServletRequest httpServletRequest)
{
StringBuffer basePath = new StringBuffer();
basePath.append(httpServletRequest.getScheme() + "://").append(httpServletRequest.getServerName() + ":" + httpServletRequest.getServerPort()).append(httpServletRequest.getContextPath() + "/");
httpServletRequest.setAttribute("basePath", basePath.toString());
}
}