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

📄 requesthandler.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
         }        // Process the eventReturn.        String eventReturn = requestManager.getRequestAttribute(requestUri, eventReturnString);        if (Debug.verboseOn()) Debug.logVerbose("[Response Qualified]: " + eventReturn, module);        // Set the next view (don't use event return if success, default to nextView (which is set to eventReturn later if null); also even if success if it is a type "none" response ignore the nextView, ie use the eventReturn)        if (eventReturn != null && (!"success".equals(eventReturnString) || eventReturn.startsWith("none:"))) nextView = eventReturn;        if (Debug.verboseOn()) Debug.logVerbose("[Event Response Mapping]: " + nextView, module);        // get the previous request info        String previousRequest = (String) request.getSession().getAttribute("_PREVIOUS_REQUEST_");        String loginPass = (String) request.getAttribute("_LOGIN_PASSED_");        // restore previous redirected request's attribute, so redirected page can display previous request's error msg etc.        String preReqAttStr = (String) request.getSession().getAttribute("_REQ_ATTR_MAP_");        Map preRequestMap = null;        if(preReqAttStr!=null){            request.getSession().removeAttribute("_REQ_ATTR_MAP_");            byte [] reqAttrMapBytes = StringUtil.fromHexString(preReqAttStr);            preRequestMap = (java.util.Map)org.ofbiz.base.util.UtilObject.getObject(reqAttrMapBytes);            java.util.Iterator keys= preRequestMap.keySet().iterator();            while(keys.hasNext()){                String key = (String) keys.next();                if("_ERROR_MESSAGE_LIST_".equals(key) ||                        "_ERROR_MESSAGE_MAP_".equals(key) ||                        "_ERROR_MESSAGE_".equals(key) ||                        "_EVENT_MESSAGE_LIST_".equals(key) ||                        "_EVENT_MESSAGE_".equals(key)){                    Object value = preRequestMap.get(key);                    request.setAttribute(key, value);               }            }        }        if (Debug.verboseOn()) Debug.logVerbose("[RequestHandler]: previousRequest - " + previousRequest + " (" + loginPass + ")", module);        // if previous request exists, and a login just succeeded, do that now.        if (previousRequest != null && loginPass != null && loginPass.equalsIgnoreCase("TRUE")) {            request.getSession().removeAttribute("_PREVIOUS_REQUEST_");            if (Debug.infoOn()) Debug.logInfo("[Doing Previous Request]: " + previousRequest, module);            doRequest(request, response, previousRequest, userLogin, delegator);            return; // this is needed or else we will run the view twice        }        String successView = requestManager.getViewName(requestUri);        if ("success".equals(eventReturnString) && successView.startsWith("request:")) {            // chains will override any url defined views; but we will save the view for the very end            if (nextView != null) {                request.setAttribute("_POST_CHAIN_VIEW_", nextView);            }            nextView = successView;        }        // Make sure we have some sort of response to go to        if (nextView == null) nextView = successView;        if (Debug.verboseOn()) Debug.logVerbose("[Current View]: " + nextView, module);        // Handle the responses - chains/views        if (nextView != null && nextView.startsWith("request:")) {            // chained request            Debug.logInfo("[RequestHandler.doRequest]: Response is a chained request.", module);            nextView = nextView.substring(8);            doRequest(request, response, nextView, userLogin, delegator);            return; // this just to be safe; not really needed        } else { // handle views            // first invoke the post-processor events.            Collection postProcEvents = requestManager.getPostProcessor();            if (postProcEvents != null) {                Iterator i = postProcEvents.iterator();                while (i.hasNext()) {                    Map eventMap = (Map) i.next();                    String eType = (String) eventMap.get(ConfigXMLReader.EVENT_TYPE);                    String ePath = (String) eventMap.get(ConfigXMLReader.EVENT_PATH);                    String eMeth = (String) eventMap.get(ConfigXMLReader.EVENT_METHOD);                    try {                        String returnString = this.runEvent(request, response, eType, ePath, eMeth);                        if (returnString != null && !returnString.equalsIgnoreCase("success"))                            throw new EventHandlerException("Post-Processor event did not return 'success'.");                        else if (returnString == null)                            nextView = "none:";                    } catch (EventHandlerException e) {                        Debug.logError(e, module);                    }                }            }            if (nextView != null && nextView.startsWith("url:")) {                // check for a url for redirection                Debug.logInfo("[RequestHandler.doRequest]: Response is a URL redirect.", module);                nextView = nextView.substring(4);                callRedirect(nextView, response, request);            } else if (nextView != null && nextView.startsWith("cross-redirect:")) {                // check for a cross-application redirect                Debug.logInfo("[RequestHandler.doRequest]: Response is a Cross-Application redirect.", module);                String url = nextView.startsWith("/") ? nextView : "/" + nextView;                callRedirect(url + this.makeQueryString(request), response, request);            } else if (nextView != null && nextView.startsWith("request-redirect:")) {                // check for a Request redirect                Debug.logInfo("[RequestHandler.doRequest]: Response is a Request redirect.", module);                nextView = nextView.substring(17);                callRedirect(makeLinkWithQueryString(request, response, "/" + nextView), response, request);            } else if (nextView != null && nextView.startsWith("view:")) {                // check for a View                Debug.logInfo("[RequestHandler.doRequest]: Response is a view.", module);                nextView = nextView.substring(5);                renderView(nextView, requestManager.allowExtView(requestUri), request, response);            } else if (nextView != null && nextView.startsWith("none:")) {                // check for a no dispatch return (meaning the return was processed by the event                Debug.logInfo("[RequestHandler.doRequest]: Response is handled by the event.", module);            } else if (nextView != null) {                // a page request                Debug.logInfo("[RequestHandler.doRequest]: Response is a page [" + nextView + "]", module);                renderView(nextView, requestManager.allowExtView(requestUri), request, response);            } else {                // unknown request                throw new RequestHandlerException("Illegal response; handler could not process [" + eventReturnString + "].");            }        }    }    /** Find the event handler and invoke an event. */    public String runEvent(HttpServletRequest request, HttpServletResponse response, String type,                           String path, String method) throws EventHandlerException {        EventHandler eventHandler = eventFactory.getEventHandler(type);        return eventHandler.invoke(path, method, request, response);    }    /** Returns the default error page for this request. */    public String getDefaultErrorPage(HttpServletRequest request) {        //String requestUri = RequestHandler.getRequestUri(request.getPathInfo());        //return requestManager.getErrorPage(requestUri);        return requestManager.getDefaultErrorPage();    }    public String makeQueryString(HttpServletRequest request) {        Map paramMap = UtilHttp.getParameterMap(request);        StringBuffer queryString = new StringBuffer();        if (paramMap != null && paramMap.size() > 0) {            queryString.append("?");            Iterator i = paramMap.keySet().iterator();            while (i.hasNext()) {                String name = (String) i.next();                Object value = paramMap.get(name);                if (value instanceof String) {                    if (queryString.length() > 1) {                        queryString.append("&");                    }                    queryString.append(name);                    queryString.append("=");                    queryString.append(value);                }            }        }        return queryString.toString();    }    /** Returns the RequestManager Object. */    public RequestManager getRequestManager() {        return requestManager;    }    /** Returns the ServletContext Object. */    public ServletContext getServletContext() {        return context;    }    /** Returns the ViewFactory Object. */    public ViewFactory getViewFactory() {        return viewFactory;    }    /** Returns the EventFactory Object. */    public EventFactory getEventFactory() {        return eventFactory;    }    public static String getRequestUri(String path) {        List pathInfo = StringUtil.split(path, "/");        if (pathInfo == null || pathInfo.size() == 0) {            Debug.logWarning("Got nothing when splitting URI: " + path, module);            return null;        }        if (((String)pathInfo.get(0)).indexOf('?') > -1) {            return ((String) pathInfo.get(0)).substring(0, ((String)pathInfo.get(0)).indexOf('?'));        } else {            return (String) pathInfo.get(0);        }    }    public static String getNextPageUri(String path) {        List pathInfo = StringUtil.split(path, "/");        String nextPage = null;        if (pathInfo == null) {            return nextPage;        }        for (int i = 1; i < pathInfo.size(); i++) {            String element = (String) pathInfo.get(i);            if (element.indexOf('~') != 0) {                if (element.indexOf('?') > -1) {                    element = element.substring(0, element.indexOf('?'));                }                if (i == 1) {                    nextPage = element;                } else {                    nextPage = nextPage + "/" + element;                }            }        }        return nextPage;    }    private void callRedirect(String url, HttpServletResponse resp, HttpServletRequest req) throws RequestHandlerException {        if (Debug.infoOn()) Debug.logInfo("[Sending redirect]: " + url, module);        // set the attributes in the session so we can access it.        java.util.Enumeration attributeNameEnum = req.getAttributeNames();        Map reqAttrMap = FastMap.newInstance();        while (attributeNameEnum.hasMoreElements()) {            String name = (String) attributeNameEnum.nextElement();            Object obj = req.getAttribute(name);            if (obj instanceof Serializable) {                reqAttrMap.put(name, obj);            }        }        if (reqAttrMap.size() > 0) {            byte[] reqAttrMapBytes = UtilObject.getBytes(reqAttrMap);            if (reqAttrMapBytes != null) {                req.getSession().setAttribute("_REQ_ATTR_MAP_", StringUtil.toHexString(reqAttrMapBytes));            }        }        // send the redirect        try {            resp.sendRedirect(url);        } catch (IOException ioe) {            throw new RequestHandlerException(ioe.getMessage(), ioe);        } catch (IllegalStateException ise) {            throw new RequestHandlerException(ise.getMessage(), ise);        }    }    private void renderView(String view, boolean allowExtView, HttpServletRequest req, HttpServletResponse resp) throws RequestHandlerException {        GenericValue userLogin = (GenericValue) req.getSession().getAttribute("userLogin");        GenericDelegator delegator = (GenericDelegator) req.getAttribute("delegator");        // workaraound if we are in the root webapp        String cname = UtilHttp.getApplicationName(req);        String oldView = view;        if (view != null && view.length() > 0 && view.charAt(0) == '/') view = view.substring(1);        // if the view name starts with the control servlet name and a /, then it was an        // attempt to override the default view with a call back into the control servlet,        // so just get the target view name and use that        String servletName = req.getServletPath().substring(1);        Debug.logInfo("servletName=" + servletName + ", view=" + view, module);        if (view.startsWith(servletName + "/")) {            view = view.substring(servletName.length() + 1);            Debug.logInfo("a manual control servlet request was received, removing control servlet path resulting in: view=" + view, module);        }        if (Debug.verboseOn()) Debug.logVerbose("[Getting View Map]: " + view, module);        // before mapping the view, set a session attribute so we know where we are        req.setAttribute("_CURRENT_VIEW_", view);        String viewType = requestManager.getViewType(view);        String tempView = requestManager.getViewPage(view);        String nextPage = null;        if (tempView == null) {            if (!allowExtView) {                throw new RequestHandlerException("No view to render.");            } else {                nextPage = "/" + oldView;            }        } else {            nextPage = tempView;        }        if (Debug.verboseOn()) Debug.logVerbose("[Mapped To]: " + nextPage, module);        long viewStartTime = System.currentTimeMillis();        // setup chararcter encoding and content type

⌨️ 快捷键说明

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