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()); } }