dispatcher.java
来自「jetty SERVER連接資料庫用的軟體」· Java 代码 · 共 580 行 · 第 1/2 页
JAVA
580 行
query = query + overridden_query_string; } else { query=query+"&"+old_query; } } base_request.setParameters(parameters); base_request.setQueryString(query); } ForwardAttributes attr = new ForwardAttributes(old_attr); //If we have already been forwarded previously, then keep using the established //original value. Otherwise, this is the first forward and we need to establish the values. //Note: the established value on the original request for pathInfo and //for queryString is allowed to be null, but cannot be null for the other values. if ((String)old_attr.getAttribute(__FORWARD_REQUEST_URI) != null) { attr._pathInfo=(String)old_attr.getAttribute(__FORWARD_PATH_INFO); attr._query=(String)old_attr.getAttribute(__FORWARD_QUERY_STRING); attr._requestURI=(String)old_attr.getAttribute(__FORWARD_REQUEST_URI); attr._contextPath=(String)old_attr.getAttribute(__FORWARD_CONTEXT_PATH); attr._servletPath=(String)old_attr.getAttribute(__FORWARD_SERVLET_PATH); } else { attr._pathInfo=old_path_info; attr._query=old_query; attr._requestURI=old_uri; attr._contextPath=old_context_path; attr._servletPath=old_servlet_path; } base_request.setRequestURI(_uri); base_request.setContextPath(_contextHandler.getContextPath()); base_request.setAttributes(attr); base_request.setQueryString(query); _contextHandler.handle(_path, (HttpServletRequest)request, (HttpServletResponse)response, dispatch); if (base_request.getConnection().getResponse().isWriting()) { try {response.getWriter().close();} catch(IllegalStateException e) { response.getOutputStream().close(); } } else { try {response.getOutputStream().close();} catch(IllegalStateException e) { response.getWriter().close(); } } } } finally { base_request.setRequestURI(old_uri); base_request.setContextPath(old_context_path); base_request.setServletPath(old_servlet_path); base_request.setPathInfo(old_path_info); base_request.setAttributes(old_attr); base_request.setParameters(old_params); base_request.setQueryString(old_query); } } /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ private class ForwardAttributes implements Attributes { Attributes _attr; String _requestURI; String _contextPath; String _servletPath; String _pathInfo; String _query; ForwardAttributes(Attributes attributes) { _attr=attributes; } /* ------------------------------------------------------------ */ public Object getAttribute(String key) { if (Dispatcher.this._named==null) { if (key.equals(__FORWARD_PATH_INFO)) return _pathInfo; if (key.equals(__FORWARD_REQUEST_URI)) return _requestURI; if (key.equals(__FORWARD_SERVLET_PATH)) return _servletPath; if (key.equals(__FORWARD_CONTEXT_PATH)) return _contextPath; if (key.equals(__FORWARD_QUERY_STRING)) return _query; } if (key.startsWith(__INCLUDE_PREFIX) || key.equals(__INCLUDE_JETTY) ) return null; if (key.equals(__FORWARD_JETTY)) return Boolean.TRUE; return _attr.getAttribute(key); } /* ------------------------------------------------------------ */ public Enumeration getAttributeNames() { HashSet set=new HashSet(); Enumeration e=_attr.getAttributeNames(); while(e.hasMoreElements()) { String name=(String)e.nextElement(); if (!name.startsWith(__INCLUDE_PREFIX) && !name.startsWith(__FORWARD_PREFIX)) set.add(name); } if (_named==null) { if (_pathInfo!=null) set.add(__FORWARD_PATH_INFO); else set.remove(__FORWARD_PATH_INFO); set.add(__FORWARD_REQUEST_URI); set.add(__FORWARD_SERVLET_PATH); set.add(__FORWARD_CONTEXT_PATH); if (_query!=null) set.add(__FORWARD_QUERY_STRING); else set.remove(__FORWARD_QUERY_STRING); } return Collections.enumeration(set); } /* ------------------------------------------------------------ */ public void setAttribute(String key, Object value) { if (_named==null && key.startsWith("javax.servlet.")) { if (key.equals(__FORWARD_PATH_INFO)) _pathInfo=(String)value; else if (key.equals(__FORWARD_REQUEST_URI)) _requestURI=(String)value; else if (key.equals(__FORWARD_SERVLET_PATH)) _servletPath=(String)value; else if (key.equals(__FORWARD_CONTEXT_PATH)) _contextPath=(String)value; else if (key.equals(__FORWARD_QUERY_STRING)) _query=(String)value; else if (value==null) _attr.removeAttribute(key); else _attr.setAttribute(key,value); } else if (value==null) _attr.removeAttribute(key); else _attr.setAttribute(key,value); } /* ------------------------------------------------------------ */ public String toString() { return "FORWARD+"+_attr.toString(); } /* ------------------------------------------------------------ */ public void clearAttributes() { throw new IllegalStateException(); } /* ------------------------------------------------------------ */ public void removeAttribute(String name) { setAttribute(name,null); } } /* ------------------------------------------------------------ */ private class IncludeAttributes implements Attributes { Attributes _attr; String _requestURI; String _contextPath; String _servletPath; String _pathInfo; String _query; IncludeAttributes(Attributes attributes) { _attr=attributes; } /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */ public Object getAttribute(String key) { if (Dispatcher.this._named==null) { if (key.equals(__INCLUDE_PATH_INFO)) return _pathInfo; if (key.equals(__INCLUDE_SERVLET_PATH)) return _servletPath; if (key.equals(__INCLUDE_CONTEXT_PATH)) return _contextPath; if (key.equals(__INCLUDE_QUERY_STRING)) return _query; if (key.equals(__INCLUDE_REQUEST_URI)) return _requestURI; } else if (key.startsWith(__INCLUDE_PREFIX)) return null; if (key.equals(__INCLUDE_JETTY)) return Boolean.TRUE; return _attr.getAttribute(key); } /* ------------------------------------------------------------ */ public Enumeration getAttributeNames() { HashSet set=new HashSet(); Enumeration e=_attr.getAttributeNames(); while(e.hasMoreElements()) { String name=(String)e.nextElement(); if (!name.startsWith(__INCLUDE_PREFIX)) set.add(name); } if (_named==null) { if (_pathInfo!=null) set.add(__INCLUDE_PATH_INFO); else set.remove(__INCLUDE_PATH_INFO); set.add(__INCLUDE_REQUEST_URI); set.add(__INCLUDE_SERVLET_PATH); set.add(__INCLUDE_CONTEXT_PATH); if (_query!=null) set.add(__INCLUDE_QUERY_STRING); else set.remove(__INCLUDE_QUERY_STRING); } return Collections.enumeration(set); } /* ------------------------------------------------------------ */ public void setAttribute(String key, Object value) { if (_named==null && key.startsWith("javax.servlet.")) { if (key.equals(__INCLUDE_PATH_INFO)) _pathInfo=(String)value; else if (key.equals(__INCLUDE_REQUEST_URI)) _requestURI=(String)value; else if (key.equals(__INCLUDE_SERVLET_PATH)) _servletPath=(String)value; else if (key.equals(__INCLUDE_CONTEXT_PATH)) _contextPath=(String)value; else if (key.equals(__INCLUDE_QUERY_STRING)) _query=(String)value; else if (value==null) _attr.removeAttribute(key); else _attr.setAttribute(key,value); } else if (value==null) _attr.removeAttribute(key); else _attr.setAttribute(key,value); } /* ------------------------------------------------------------ */ public String toString() { return "INCLUDE+"+_attr.toString(); } /* ------------------------------------------------------------ */ public void clearAttributes() { throw new IllegalStateException(); } /* ------------------------------------------------------------ */ public void removeAttribute(String name) { setAttribute(name,null); } }};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?