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

📄 requestutils.java.svn-base

📁 MVC开源框架
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
     * reserved.)</li>     *     * </ul></li>     *     * </ul>     *     * @param request The servlet request we are processing     * @param forward ForwardConfig to be evaluated     * @return context-relative URL     * @since Struts 1.1     */    public static String forwardURL(HttpServletRequest request,        ForwardConfig forward) {        return forwardURL(request, forward, null);    }    /**     * <p>Return the context-relative URL that corresponds to the specified     * <code>ForwardConfig</code>. The URL is calculated based on the     * properties of the {@link ForwardConfig} instance as follows:</p>     *     * <ul>     *     * <li>If the <code>contextRelative</code> property is set, it is assumed     * that the <code>path</code> property contains a path that is already     * context-relative: <ul>     *     * <li>If the <code>path</code> property value starts with a slash, it is     * returned unmodified.</li> <li>If the <code>path</code> property value     * does not start with a slash, a slash is prepended.</li>     *     * </ul></li>     *     * <li>Acquire the <code>forwardPattern</code> property from the     * <code>ControllerConfig</code> for the application module used to     * process this request. If no pattern was configured, default to a     * pattern of <code>$M$P</code>, which is compatible with the hard-coded     * mapping behavior in Struts 1.0.</li>     *     * <li>Process the acquired <code>forwardPattern</code>, performing the     * following substitutions: <ul> <li><strong>$M</strong> - Replaced by the     * module prefix for the application module processing this request.</li>     *     * <li><strong>$P</strong> - Replaced by the <code>path</code> property of     * the specified {@link ForwardConfig}, prepended with a slash if it does     * not start with one.</li>     *     * <li><strong>$$</strong> - Replaced by a single dollar sign     * character.</li>     *     * <li><strong>$x</strong> (where "x" is any charater not listed above) -     * Silently omit these two characters from the result value.  (This has     * the side effect of causing all other $+letter combinations to be     * reserved.)</li>     *     * </ul></li></ul>     *     * @param request      The servlet request we are processing     * @param forward      ForwardConfig to be evaluated     * @param moduleConfig Base forward on this module config.     * @return context-relative URL     * @since Struts 1.2     */    public static String forwardURL(HttpServletRequest request,        ForwardConfig forward, ModuleConfig moduleConfig) {        //load the current moduleConfig, if null        if (moduleConfig == null) {            moduleConfig = ModuleUtils.getInstance().getModuleConfig(request);        }        String path = forward.getPath();        //load default prefix        String prefix = moduleConfig.getPrefix();        //override prefix if supplied by forward        if (forward.getModule() != null) {            prefix = forward.getModule();            if ("/".equals(prefix)) {                prefix = "";            }        }        StringBuffer sb = new StringBuffer();        // Calculate a context relative path for this ForwardConfig        String forwardPattern =            moduleConfig.getControllerConfig().getForwardPattern();        if (forwardPattern == null) {            // Performance optimization for previous default behavior            sb.append(prefix);            // smoothly insert a '/' if needed            if (!path.startsWith("/")) {                sb.append("/");            }            sb.append(path);        } else {            boolean dollar = false;            for (int i = 0; i < forwardPattern.length(); i++) {                char ch = forwardPattern.charAt(i);                if (dollar) {                    switch (ch) {                    case 'M':                        sb.append(prefix);                        break;                    case 'P':                        // add '/' if needed                        if (!path.startsWith("/")) {                            sb.append("/");                        }                        sb.append(path);                        break;                    case '$':                        sb.append('$');                        break;                    default:                        ; // Silently swallow                    }                    dollar = false;                    continue;                } else if (ch == '$') {                    dollar = true;                } else {                    sb.append(ch);                }            }        }        return (sb.toString());    }    /**     * <p>Return the URL representing the current request. This is equivalent     * to <code>HttpServletRequest.getRequestURL</code> in Servlet 2.3.</p>     *     * @param request The servlet request we are processing     * @return URL representing the current request     * @throws MalformedURLException if a URL cannot be created     */    public static URL requestURL(HttpServletRequest request)        throws MalformedURLException {        StringBuffer url = requestToServerUriStringBuffer(request);        return (new URL(url.toString()));    }    /**     * <p>Return the URL representing the scheme, server, and port number of     * the current request. Server-relative URLs can be created by simply     * appending the server-relative path (starting with '/') to this.</p>     *     * @param request The servlet request we are processing     * @return URL representing the scheme, server, and port number of the     *         current request     * @throws MalformedURLException if a URL cannot be created     */    public static URL serverURL(HttpServletRequest request)        throws MalformedURLException {        StringBuffer url = requestToServerStringBuffer(request);        return (new URL(url.toString()));    }    /**     * <p>Return the string representing the scheme, server, and port number     * of the current request. Server-relative URLs can be created by simply     * appending the server-relative path (starting with '/') to this.</p>     *     * @param request The servlet request we are processing     * @return URL representing the scheme, server, and port number of the     *         current request     * @since Struts 1.2.0     */    public static StringBuffer requestToServerUriStringBuffer(        HttpServletRequest request) {        StringBuffer serverUri =            createServerUriStringBuffer(request.getScheme(),                request.getServerName(), request.getServerPort(),                request.getRequestURI());        return serverUri;    }    /**     * <p>Return <code>StringBuffer</code> representing the scheme, server,     * and port number of the current request. Server-relative URLs can be     * created by simply appending the server-relative path (starting with     * '/') to this.</p>     *     * @param request The servlet request we are processing     * @return URL representing the scheme, server, and port number of the     *         current request     * @since Struts 1.2.0     */    public static StringBuffer requestToServerStringBuffer(        HttpServletRequest request) {        return createServerStringBuffer(request.getScheme(),            request.getServerName(), request.getServerPort());    }    /**     * <p>Return <code>StringBuffer</code> representing the scheme, server,     * and port number of the current request.</p>     *     * @param scheme The scheme name to use     * @param server The server name to use     * @param port   The port value to use     * @return StringBuffer in the form scheme: server: port     * @since Struts 1.2.0     */    public static StringBuffer createServerStringBuffer(String scheme,        String server, int port) {        StringBuffer url = new StringBuffer();        if (port < 0) {            port = 80; // Work around java.net.URL bug        }        url.append(scheme);        url.append("://");        url.append(server);        if ((scheme.equals("http") && (port != 80))            || (scheme.equals("https") && (port != 443))) {            url.append(':');            url.append(port);        }        return url;    }    /**     * <p>Return <code>StringBuffer</code> representing the scheme, server,     * and port number of the current request.</p>     *     * @param scheme The scheme name to use     * @param server The server name to use     * @param port   The port value to use     * @param uri    The uri value to use     * @return StringBuffer in the form scheme: server: port     * @since Struts 1.2.0     */    public static StringBuffer createServerUriStringBuffer(String scheme,        String server, int port, String uri) {        StringBuffer serverUri = createServerStringBuffer(scheme, server, port);        serverUri.append(uri);        return serverUri;    }    /**     * <p>Returns the true path of the destination action if the specified forward     * is an action-aliased URL. This method version forms the URL based on     * the current request; selecting the current module if the forward does not     * explicitly contain a module path.</p>     *     * @param forward the forward config     * @param request the current request     * @param servlet the servlet handling the current request     * @return the context-relative URL of the action if the forward has an action identifier; otherwise <code>null</code>.     * @since Struts 1.3.6     */    public static String actionIdURL(ForwardConfig forward, HttpServletRequest request, ActionServlet servlet) {        ModuleConfig moduleConfig = null;        if (forward.getModule() != null) {            String prefix = forward.getModule();            moduleConfig = ModuleUtils.getInstance().getModuleConfig(prefix, servlet.getServletContext());        } else {            moduleConfig = ModuleUtils.getInstance().getModuleConfig(request);        }        return actionIdURL(forward.getPath(), moduleConfig, servlet);    }    /**     * <p>Returns the true path of the destination action if the specified forward     * is an action-aliased URL. This method version forms the URL based on     * the specified module.     *     * @param originalPath the action-aliased path     * @param moduleConfig the module config for this request     * @param servlet the servlet handling the current request     * @return the context-relative URL of the action if the path has an action identifier; otherwise <code>null</code>.     * @since Struts 1.3.6     */    public static String actionIdURL(String originalPath, ModuleConfig moduleConfig, ActionServlet servlet) {        if (originalPath.startsWith("http") || originalPath.startsWith("/")) {            return null;        }        // Split the forward path into the resource and query string;        // it is possible a forward (or redirect) has added parameters.        String actionId = null;        String qs = null;        int qpos = originalPath.indexOf("?");        if (qpos == -1) {            actionId = originalPath;        } else {            actionId = originalPath.substring(0, qpos);            qs = originalPath.substring(qpos);        }        // Find the action of the given actionId        ActionConfig actionConfig = moduleConfig.findActionConfigId(actionId);        if (actionConfig == null) {            if (log.isDebugEnabled()) {                log.debug("No actionId found for " + actionId);            }            return null;        }        String path = actionConfig.getPath();        String mapping = RequestUtils.getServletMapping(servlet);        StringBuffer actionIdPath = new StringBuffer();        // Form the path based on the servlet mapping pattern        if (mapping.startsWith("*")) {            actionIdPath.append(path);            actionIdPath.append(mapping.substring(1));        } else if (mapping.startsWith("/")) {  // implied ends with a *            mapping = mapping.substring(0, mapping.length() - 1);            if (mapping.endsWith("/") && path.startsWith("/")) {                actionIdPath.append(mapping);                actionIdPath.append(path.substring(1));            } else {                actionIdPath.append(mapping);                actionIdPath.append(path);            }        } else {            log.warn("Unknown servlet mapping pattern");            actionIdPath.append(path);        }        // Lastly add any query parameters (the ? is part of the query string)        if (qs != null) {            actionIdPath.append(qs);        }        // Return the path        if (log.isDebugEnabled()) {            log.debug(originalPath + " unaliased to " + actionIdPath.toString());        }        return actionIdPath.toString();    }    /**     * Verifies whether current request is forwarded from one action to     * another or not.     * @param request current HTTP request      * @return true if the request contains Globals.FORWARD_KEY, which means     *         that request has been forwarded from another action.     *     * @since Struts 1.4     */    public static boolean isForwarded(HttpServletRequest request) {        return request.getAttribute(Globals.FORWARD_KEY) != null;    }}

⌨️ 快捷键说明

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