⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 breadcrumbsinterceptor.java

📁 一个很好的开源项目管理系统源代码
💻 JAVA
字号:
package net.java.workeffort.webapp.support;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import org.springframework.web.util.UrlPathHelper;/** * Manages the bread crumbs of the user. * @author Antony Joseph */public class BreadCrumbsInterceptor extends HandlerInterceptorAdapter {    protected static final Log logger = LogFactory            .getLog(BreadCrumbsInterceptor.class);    public boolean preHandle(HttpServletRequest request,            HttpServletResponse response, Object handler) throws Exception {        if (logger.isInfoEnabled())            logger.info("preHandle() invoked");        BreadCrumbs breadCrumbs = null;        if (request.getParameter("fromMenu") != null) {            // navigating from main menu. clear the bread crumbs            breadCrumbs = (BreadCrumbs) request.getSession().getAttribute(                    WebConstants.BREAD_CRUMBS);            breadCrumbs.clear();            // set session attribute for the case where the http session is            // being replicated in a cluster            request.getSession().setAttribute(WebConstants.BREAD_CRUMBS,                    breadCrumbs);        }        String dispatch = request.getParameter("dispatch");        if (logger.isInfoEnabled())            logger.info("dispatch=" + dispatch);        if (!hasParentFlow(request)                && ("newSearch".equals(dispatch) || "query".equals(dispatch) || request                        .getParameter("crumbsEnabled") != null)) {            Crumb crumb = new Crumb(getKey(request, dispatch),                    createUrlWithParameters(request, response));            breadCrumbs = (BreadCrumbs) request.getSession().getAttribute(                    WebConstants.BREAD_CRUMBS);            breadCrumbs.put(crumb);            // set session attribute for the case where the http session is            // being replicated in a cluster            request.getSession().setAttribute(WebConstants.BREAD_CRUMBS,                    breadCrumbs);        }        return true;    }    /**     * The crumb key. Example: mapping path '/requirmentSearch.do' and suffix is     * 'newSearch' then the key is 'requirmentSearch.newSearch.crumb'     * @param request The request     * @param suffix The suffix     * @return     */    private String getKey(HttpServletRequest request, String suffix) {        UrlPathHelper helper = new UrlPathHelper();        String mappingPath = helper.getLookupPathForRequest(request);        if (suffix == null)            return mappingPath.substring(1, mappingPath.indexOf("."))                    + ".crumb";        else            return mappingPath.substring(1, mappingPath.indexOf(".")) + "."                    + suffix + ".crumb";    }    /**     * Creates the full url for the bread crumb using the request url and     * parameters. The url is encoded.     * @param request The request     * @param response The response     * @return The encoded full url     */    private String createUrlWithParameters(HttpServletRequest request,            HttpServletResponse response) {        StringBuffer sb = request.getRequestURL();        boolean isFirst = true;        Enumeration enum = request.getParameterNames();        while (enum.hasMoreElements()) {            String name = (String) enum.nextElement();            String values[] = request.getParameterValues(name);            String val = null;            if (values != null) {                for (int i = 0; i < values.length; i++) {                    addParameter(sb, name, values[i], isFirst);                    isFirst = false;                }            }            else {                addParameter(sb, name, null, isFirst);            }            isFirst = false;        }        return (response.encodeURL(sb.toString()));    }    /**     * Adds the name/value pair to the url. The value is encoded.     * @param sb String buffer     * @param name The parameter name     * @param value The value of the parameter     * @param isFirst Whether the first parameter     */    private void addParameter(StringBuffer sb, String name, String value,            boolean isFirst) {        if (isFirst)            sb.append("?");        else            sb.append("&");        sb.append(name);        if (value != null) {            sb.append("=");            try {                value = URLEncoder.encode(value, "UTF-8");            }            catch (UnsupportedEncodingException e) {                throw new RuntimeException(e);            }            sb.append(value);        }    }    private boolean hasParentFlow(HttpServletRequest request) {        if (request.getParameter("parentFlow") == null                || request.getParameter("parentFlow").length() == 0)            return false;        else            return true;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -