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

📄 dynamedias.java

📁 非常接近C/S操作方式的Java Ajax框架-ZK 用ZK框架使你的B/S应用程序更漂亮更易操作。 官网:www.zkoss.org
💻 JAVA
字号:
/* DynaMedias.java{{IS_NOTE	Purpose:			Description:			History:		Mon Aug 14 12:48:56     2006, Created by tomyeh}}IS_NOTECopyright (C) 2006 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.au.http;import java.io.Writer;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletOutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.fileupload.servlet.ServletRequestContext;import org.zkoss.mesg.Messages;import org.zkoss.lang.D;import org.zkoss.io.Files;import org.zkoss.util.media.Media;import org.zkoss.util.logging.Log;import org.zkoss.zk.mesg.MZk;import org.zkoss.zk.ui.WebApp;import org.zkoss.zk.ui.Session;import org.zkoss.zk.ui.Execution;import org.zkoss.zk.ui.Executions;import org.zkoss.zk.ui.Desktop;import org.zkoss.zk.ui.Component;import org.zkoss.zk.ui.UiException;import org.zkoss.zk.ui.ComponentNotFoundException;import org.zkoss.zk.ui.util.Configuration;import org.zkoss.zk.ui.ext.render.DynamicMedia;import org.zkoss.zk.ui.sys.WebAppCtrl;import org.zkoss.zk.ui.sys.ComponentCtrl;import org.zkoss.zk.ui.sys.UiEngine;import org.zkoss.zk.ui.http.ExecutionImpl;/** * The utility used to response the content for {@link DynamicMedia#getMedia} *  * @author tomyeh *//*package*/ class DynaMedias {//	private static final Log log = Log.lookup(DynaMedias.class);	private DynaMedias() {}	/** Retrieves the response from {@link DynamicMedia#getMedia}.	 */	public static final void process(Session sess, ServletContext ctx,	HttpServletRequest request, HttpServletResponse response, String pi)	throws ServletException, IOException {//		if (D.ON && log.debugable()) log.debug("View "+pi);		if (pi.length() == 0 || pi.charAt(0) != '/')			throw new ServletException("Wrong path info: "+pi);		int j = pi.indexOf('/', 1);		if (j < 0)			throw new ServletException("Wrong path info: "+pi);		final String dtid = pi.substring(1, j);		final int k = pi.indexOf('/', ++j);		final String uuid = k >= 0 ? pi.substring(j, k): pi.substring(j);		final Media media;		try {			final WebApp wapp = sess.getWebApp();			final WebAppCtrl wappc = (WebAppCtrl)wapp;			final UiEngine uieng = wappc.getUiEngine();			final Desktop desktop = wappc.getDesktopCache(sess).getDesktop(dtid);			final Execution oldexec = Executions.getCurrent();			final Execution exec = new ExecutionImpl(				ctx, request, response, desktop, null);			uieng.activate(exec);			final Configuration config = wapp.getConfiguration();			boolean err = false;			try {				config.invokeExecutionInits(exec, oldexec);				final Component comp = desktop.getComponentByUuid(uuid);				final Object cc = ((ComponentCtrl)comp).getExtraCtrl();				if (!(cc instanceof DynamicMedia))					throw new ServletException(DynamicMedia.class+" must be implemented by getExtraCtrl() of "+comp);				media = ((DynamicMedia)cc).getMedia(k >= 0 ? pi.substring(k): "");				if (media == null) {					response.sendError(response.SC_GONE, "Media not found in "+comp);					return;				}			} catch (Throwable ex) {				err = true;				config.invokeExecutionCleanups(exec, oldexec, ex, null);				if (ex instanceof ServletException) throw (ServletException)ex;				if (ex instanceof IOException) throw (IOException)ex;				throw UiException.Aide.wrap(ex);			} finally {				if (!err) config.invokeExecutionCleanups(exec, oldexec, null, null);				uieng.deactivate(exec);			}		} catch (ComponentNotFoundException ex) {			//possible because view might be as late as origin comp is gone			response.sendError(response.SC_GONE, Messages.get(MZk.UPDATE_OBSOLETE_PAGE, uuid));			return;		}		//reading an image and send it back to client		final String ctype = media.getContentType();		if (ctype != null)			response.setContentType(ctype);		if (!media.inMemory()) {			if (media.isBinary()) {				final ServletOutputStream out = response.getOutputStream();				Files.copy(out, media.getStreamData());				out.flush();			} else {				final Writer out = response.getWriter();				Files.copy(out, media.getReaderData());				out.flush();			}			return; //done;		}		final ServletOutputStream out = response.getOutputStream();		final byte[] data = media.isBinary() ? media.getByteData():			media.getStringData().getBytes("UTF-8");		response.setContentLength(data.length);		out.write(data);		out.flush();		//FUTURE: support last-modified	}}

⌨️ 快捷键说明

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