com.pcms.core.util.UrlUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.pcms.core.util.UrlUtil.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.pcms.core.util;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.util.UrlPathHelper;

/**
 *
 * @author wx.pan
 */
public class UrlUtil {

    /**
     * ?
     *
     * @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));
    }

    public 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?
     */
    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;
        }

    }
}