package examples.server; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; /** * User: treeder * Date: Jul 30, 2007 * Time: 9:32:39 PM */ public class UserUrlFilter implements Filter { private static Log log = LogFactory.getLog(UserUrlFilter.class); private String idJsp; public void init(FilterConfig filterConfig) throws ServletException { idJsp = filterConfig.getInitParameter("idJsp"); } public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; String s = request.getServletPath(); s = URLDecoder.decode(s, "utf-8"); log.debug("servletpath: " + s); String[] sections = s.split("/"); log.debug("sections.length: " + sections.length); String redir = ""; String contextPath = request.getContextPath(); if (sections.length >= 2) { for (int i = 0; i < sections.length; i++) { String section = sections[i]; log.debug("section: " + section); if (section.equals("user")) { String username = sections[i + 1]; log.debug("username: " + username); log.debug("forwarding to: " + contextPath + idJsp); request.setAttribute("username", username); forward(request, response, idJsp); return; } } } filterChain.doFilter(req, res); } public void destroy() { } private void forward(HttpServletRequest request, HttpServletResponse response, String path) throws IOException, ServletException { request.getRequestDispatcher(path).forward(request, response); } }