Package com.jeecms.core.web.front

Source Code of com.jeecms.core.web.front.URLHelper$PageInfo

package com.jeecms.core.web.front;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.web.util.UrlPathHelper;

/**
* URI帮助类
*
* @author liufang
*
*/
public class URLHelper {
  /**
   * 获得页号
   *
   * @param request
   * @return
   */
  public static int getPageNo(HttpServletRequest request) {
    return getPageNo(getURI(request));
  }

  /**
   * 获得路径信息
   *
   * @param request
   * @return
   */
  public static String[] getPaths(HttpServletRequest request) {
    return getPaths(getURI(request));
  }

  /**
   * 获得路径参数
   *
   * @param request
   * @return
   */
  public static String[] getParams(HttpServletRequest request) {
    return getParams(getURI(request));
  }

  private static String getURI(HttpServletRequest request) {
    UrlPathHelper helper = new UrlPathHelper();
    String uri = helper.getOriginatingRequestUri(request);
    String ctx = helper.getOriginatingContextPath(request);
    if (!StringUtils.isBlank(ctx)) {
      return uri.substring(ctx.length());
    } else {
      return uri;
    }
  }

  /**
   * 获得翻页信息
   *
   * @param request
   * @return
   */
  public static PageInfo getPageInfo(HttpServletRequest request) {
    UrlPathHelper helper = new UrlPathHelper();
    String uri = helper.getOriginatingRequestUri(request);
    String queryString = helper.getOriginatingQueryString(request);
    return getPageInfo(uri, queryString);
  }

  /**
   * 获得页号
   *
   * @param uri
   *            URI {@link HttpServletRequest#getRequestURI()}
   * @return
   */
  public static int getPageNo(String uri) {
    if (uri == null) {
      throw new IllegalArgumentException("URI can not be null");
    }
    if (!uri.startsWith("/")) {
      throw new IllegalArgumentException("URI must start width '/'");
    }
    int pageNo = 1;
    int bi = uri.indexOf("_");
    int mi = uri.indexOf("-");
    int pi = uri.indexOf(".");
    if (bi != -1) {
      String pageNoStr;
      if (mi != -1) {
        pageNoStr = uri.substring(bi + 1, mi);
      } else {
        if (pi != -1) {
          pageNoStr = uri.substring(bi + 1, pi);
        } else {
          pageNoStr = uri.substring(bi + 1);
        }
      }
      try {
        pageNo = Integer.valueOf(pageNoStr);
      } catch (Exception e) {
      }
    }
    return pageNo;
  }

  /**
   * 获得路径数组
   *
   * @param uri
   *            URI {@link HttpServletRequest#getRequestURI()}
   * @return
   */
  public static String[] getPaths(String uri) {
    if (uri == null) {
      throw new IllegalArgumentException("URI can not be null");
    }
    if (!uri.startsWith("/")) {
      throw new IllegalArgumentException("URI must start width '/'");
    }
    int bi = uri.indexOf("_");
    int mi = uri.indexOf("-");
    int pi = uri.indexOf(".");
    // 获得路径信息
    String pathStr;
    if (bi != -1) {
      pathStr = uri.substring(0, bi);
    } else if (mi != -1) {
      pathStr = uri.substring(0, mi);
    } else if (pi != -1) {
      pathStr = uri.substring(0, pi);
    } else {
      pathStr = uri;
    }
    String[] paths = StringUtils.split(pathStr, '/');
    return paths;
  }

  /**
   * 获得路径参数
   *
   * @param uri
   *            URI {@link HttpServletRequest#getRequestURI()}
   * @return
   */
  public static String[] getParams(String uri) {
    if (uri == null) {
      throw new IllegalArgumentException("URI can not be null");
    }
    if (!uri.startsWith("/")) {
      throw new IllegalArgumentException("URI must start width '/'");
    }
    int mi = uri.indexOf("-");
    int pi = uri.indexOf(".");
    String[] params;
    if (mi != -1) {
      String paramStr;
      if (pi != -1) {
        paramStr = uri.substring(mi, pi);
      } else {
        paramStr = uri.substring(mi);
      }
      params = new String[StringUtils.countMatches(paramStr, "-")];
      int fromIndex = 1;
      int nextIndex = 0;
      int i = 0;
      while ((nextIndex = paramStr.indexOf("-", fromIndex)) != -1) {
        params[i++] = paramStr.substring(fromIndex, nextIndex);
        fromIndex = nextIndex + 1;
      }
      params[i++] = paramStr.substring(fromIndex);
    } else {
      params = new String[0];
    }
    return params;
  }

  /**
   * 获得URL信息
   *
   * @param uri
   *            URI {@link HttpServletRequest#getRequestURI()}
   * @param queryString
   *            查询字符串 {@link HttpServletRequest#getQueryString()}
   * @return
   */
  public static PageInfo getPageInfo(String uri, String queryString) {
    if (uri == null) {
      return null;
    }
    if (!uri.startsWith("/")) {
      throw new IllegalArgumentException("URI must start width '/'");
    }
    int bi = uri.indexOf("_");
    int mi = uri.indexOf("-");
    int pi = uri.indexOf(".");
    int lastSpt = uri.lastIndexOf("/") + 1;
    String url;
    if (!StringUtils.isBlank(queryString)) {
      url = uri + "?" + queryString;
    } else {
      url = uri;
    }
    // 翻页前半部
    String urlFormer;
    if (bi != -1) {
      urlFormer = uri.substring(lastSpt, bi);
    } else if (mi != -1) {
      urlFormer = uri.substring(lastSpt, mi);
    } else if (pi != -1) {
      urlFormer = uri.substring(lastSpt, pi);
    } else {
      urlFormer = uri.substring(lastSpt);
    }
    // 翻页后半部
    String urlLater;
    if (mi != -1) {
      urlLater = url.substring(mi);
    } else if (pi != -1) {
      urlLater = url.substring(pi);
    } else {
      urlLater = url.substring(uri.length());
    }
    String href = url.substring(lastSpt);
    return new PageInfo(href, urlFormer, urlLater);
  }

  /**
   * URI信息
   *
   * @author liufang
   *
   */
  public static class PageInfo {
    /**
     * 页面地址
     */
    private String href;
    /**
     * href前半部(相对于分页)
     */
    private String hrefFormer;
    /**
     * href后半部(相对于分页)
     */
    private String hrefLatter;

    public PageInfo(String href, String hrefFormer, String hrefLatter) {
      this.href = href;
      this.hrefFormer = hrefFormer;
      this.hrefLatter = hrefLatter;
    }

    public String getHref() {
      return href;
    }

    public void setHref(String href) {
      this.href = href;
    }

    public String getHrefFormer() {
      return hrefFormer;
    }

    public void setHrefFormer(String hrefFormer) {
      this.hrefFormer = hrefFormer;
    }

    public String getHrefLatter() {
      return hrefLatter;
    }

    public void setHrefLatter(String hrefLatter) {
      this.hrefLatter = hrefLatter;
    }

  }
}
TOP

Related Classes of com.jeecms.core.web.front.URLHelper$PageInfo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.