package org.beanfuse.security.web; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; /** * 去掉扩展名和!符号的资源提取器 * @author chaostone * */ public class DefaultResourceExtractor implements ResourceExtractor { public String extract(HttpServletRequest request) { String servletPath = request.getServletPath(); if (StringUtils.isEmpty(servletPath)) { servletPath = StringUtils.substringAfter(request.getRequestURI(), request .getContextPath()); } return extract(servletPath); } /** * 过滤多余的/和空格 */ public String extract(final String uri) { int firstSlot = 0; while ('/' == uri.charAt(firstSlot) || ' ' == uri.charAt(firstSlot)) { firstSlot++; } int lastDot = -1; for (int i = 0; i < uri.length(); i++) { char a = uri.charAt(i); if (a == '.' || a == '!') { lastDot = i; break; } } if (lastDot < 0) { lastDot = uri.length(); } return uri.substring(firstSlot, lastDot); } }