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

📄 executionimpl.java

📁 非常接近C/S操作方式的Java Ajax框架-ZK 用ZK框架使你的B/S应用程序更漂亮更易操作。 官网:www.zkoss.org
💻 JAVA
字号:
/* ExecutionImpl.java{{IS_NOTE	Purpose:			Description:			History:		Mon Jun  6 14:14:02     2005, Created by tomyeh}}IS_NOTECopyright (C) 2005 Potix Corporation. All Rights Reserved.{{IS_RIGHT	This program is distributed under GPL Version 2.0 in the hope that	it will be useful, but WITHOUT ANY WARRANTY.}}IS_RIGHT*/package org.zkoss.zk.ui.http;import java.util.Map;import java.util.Enumeration;import java.io.Writer;import java.io.Reader;import java.io.IOException;import java.security.Principal;import javax.servlet.ServletContext;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.el.ELException;import org.zkoss.el.RequestResolver;import org.zkoss.el.impl.AttributesMap;import org.zkoss.idom.Document;import org.zkoss.web.servlet.Servlets;import org.zkoss.web.servlet.BufferedResponse;import org.zkoss.web.servlet.http.Encodes;import org.zkoss.web.el.ELContext;import org.zkoss.web.el.PageELContext;import org.zkoss.zk.ui.UiException;import org.zkoss.zk.ui.Page;import org.zkoss.zk.ui.Desktop;import org.zkoss.zk.ui.WebApp;import org.zkoss.zk.ui.impl.AbstractExecution;import org.zkoss.zk.ui.metainfo.PageDefinition;import org.zkoss.zk.ui.metainfo.PageDefinitions;import org.zkoss.zk.ui.sys.WebAppCtrl;import org.zkoss.zk.ui.sys.RequestInfo;import org.zkoss.zk.ui.impl.RequestInfoImpl;/** * An {@link org.zkoss.zk.ui.Execution} implementation for HTTP request * and response. * * @author tomyeh */public class ExecutionImpl extends AbstractExecution {	private final ServletContext _ctx;	private final ServletRequest _request;	private final ServletResponse _response;	private final ELContext _elctx;	private final Map _attrs;	/** Constructs an execution for HTTP request.	 * @param creating which page is being creating for this execution, or	 * null if none is being created.	 * {@link #isAsyncUpdate} returns based on this.	 */	public ExecutionImpl(ServletContext ctx, ServletRequest request,	ServletResponse response, Desktop desktop, Page creating) {		super(desktop, creating, new RequestResolver(ctx, request, response));		_ctx = ctx;		_request = request;		_response = response;		final PageContext pgctx;		try {			pgctx = (PageContext)				getVariableResolver().resolveVariable("pageContext");		} catch (ELException ex) {			throw new UiException(ex);		}		if (pgctx == null)			throw new UiException("Unable to resolve pageContext");		_elctx = new PageELContext(pgctx);		_attrs = new AttributesMap() {			protected Enumeration getKeys() {				return _request.getAttributeNames();			}			protected Object getValue(String key) {				return _request.getAttribute(key);			}			protected void setValue(String key, Object val) {				_request.setAttribute(key, val);			}			protected void removeValue(String key) {				_request.removeAttribute(key);			}		};	}	//-- super --//	protected ELContext getELContext() {		return _elctx;	}	//-- Execution --//	public String[] getParameterValues(String name) {		return _request.getParameterValues(name);	}	public String getParameter(String name) {		return _request.getParameter(name);	}	public Map getParameterMap() {		return _request.getParameterMap();	}	public void include(Writer out, String page, Map params, int mode)	throws IOException {		try {			Servlets.include(_ctx, _request,				BufferedResponse.getInstance(_response, out),				page, params, mode);				//we don't use PageContext.include because Servlets.include				//support ~xxx/ and other features.		} catch (ServletException ex) {			throw new UiException(ex);		}	}	public void include(String page)	throws IOException {		include(null, page, null, 0);	}	public void forward(Writer out, String page, Map params, int mode)	throws IOException {		if (getVisualizer().isEverAsyncUpdate())			throw new IllegalStateException("Use sendRedirect instead when processing user's request");		try {			Servlets.forward(_ctx, _request,				BufferedResponse.getInstance(_response, out),				page, params, mode);				//we don't use PageContext.forward because Servlets.forward				//support ~xxx/ and other features.		} catch (ServletException ex) {			throw new UiException(ex);		}	}	public void forward(String page)	throws IOException {		forward(null, page, null, 0);	}	public boolean isIncluded() {		return Servlets.isIncluded(_request);	}	public String encodeURL(String uri) {		try {			return Encodes.encodeURL(_ctx, _request, _response, uri);		} catch (ServletException ex) {			throw new UiException(ex);		}	}	public Principal getUserPrincipal() {		return _request instanceof HttpServletRequest ?			((HttpServletRequest)_request).getUserPrincipal(): null;	}	public boolean isUserInRole(String role) {		return _request instanceof HttpServletRequest &&			((HttpServletRequest)_request).isUserInRole(role);	}	public String getRemoteUser() {		return _request instanceof HttpServletRequest ?			((HttpServletRequest)_request).getRemoteUser(): null;	}	public String getRemoteName() {		return _request.getRemoteHost();	}	public String getRemoteAddr() {		return _request.getRemoteAddr();	}	public String getServerName() {		return _request.getServerName();	}	public int getServerPort() {		return _request.getServerPort();	}	public String getLocalName() {		return _request.getLocalName();	}	public String getLocalAddr() {		return _request.getLocalAddr();	}	public int getLocalPort() {		return _request.getLocalPort();	}	public String getContextPath() {		return _request instanceof HttpServletRequest ?			((HttpServletRequest)_request).getContextPath(): null;	}	public PageDefinition getPageDefinition(String uri) {		//Note: we have to go thru UiFactory (so user can override it)		uri = toAbsoluteURI(uri, false);		final PageDefinition pagedef =			((WebAppCtrl)getDesktop().getWebApp()).getUiFactory()			.getPageDefinition(newRequestInfo(uri), uri);		if (pagedef == null)			throw new UiException("Page not found: "+uri);		return pagedef;	}	public PageDefinition getPageDefinitionDirectly(String content, String ext) {		//Note: we have to go thru UiFactory (so user can override it)		return ((WebAppCtrl)getDesktop().getWebApp()).getUiFactory()			.getPageDefinitionDirectly(newRequestInfo(null), content, ext);	}	public PageDefinition getPageDefinitionDirectly(Document content, String ext) {		//Note: we have to go thru UiFactory (so user can override it)		return ((WebAppCtrl)getDesktop().getWebApp()).getUiFactory()			.getPageDefinitionDirectly(newRequestInfo(null), content, ext);	}	public PageDefinition getPageDefinitionDirectly(Reader reader, String ext)	throws IOException {		//Note: we have to go thru UiFactory (so user can override it)		return ((WebAppCtrl)getDesktop().getWebApp()).getUiFactory()			.getPageDefinitionDirectly(newRequestInfo(null), reader, ext);	}	private RequestInfo newRequestInfo(String uri) {		final Desktop dt = getDesktop();		return new RequestInfoImpl(			dt, _request, PageDefinitions.getLocator(getDesktop().getWebApp(), uri));	}	public void setHeader(String name, String value) {		if (_response instanceof HttpServletResponse)			((HttpServletResponse)_response).setHeader(name, value);	}	public Object getRequestAttribute(String name) {		return _request.getAttribute(name);	}	public void setRequestAttribute(String name, Object value) {		_request.setAttribute(name, value);	}	public boolean isBrowser() {		return true;	}	public boolean isRobot() {		return Servlets.isRobot(_request);	}	public boolean isExplorer() {		return Servlets.isExplorer(_request);	}	public boolean isExplorer7() {		return Servlets.isExplorer7(_request);	}	public boolean isGecko() {		return Servlets.isGecko(_request);	}	public boolean isSafari() {		return Servlets.isSafari(_request);	}	public Object getNativeRequest() {		return _request;	}	public Object getNativeResponse() {		return _response;	}	public Object getAttribute(String name) {		return _request.getAttribute(name);	}	public void setAttribute(String name, Object value) {		_request.setAttribute(name, value);	}	public void removeAttribute(String name) {		_request.removeAttribute(name);	}	public Map getAttributes() {		return _attrs;	}}

⌨️ 快捷键说明

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