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

📄 dhtmllayoutfilter.java

📁 非常接近C/S操作方式的Java Ajax框架-ZK 用ZK框架使你的B/S应用程序更漂亮更易操作。 官网:www.zkoss.org
💻 JAVA
字号:
/* DHtmlLayoutFilter.java{{IS_NOTE	Purpose:			Description:			History:		Wed Nov 30 00:49:59     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.io.StringWriter;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.FilterChain;import javax.servlet.Filter;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.zkoss.util.logging.Log;import org.zkoss.web.servlet.BufferedResponse;import org.zkoss.zk.ui.WebApp;import org.zkoss.zk.ui.Desktop;import org.zkoss.zk.ui.Page;import org.zkoss.zk.ui.Session;import org.zkoss.zk.ui.Execution;import org.zkoss.zk.ui.UiException;import org.zkoss.zk.ui.metainfo.PageDefinition;import org.zkoss.zk.ui.sys.UiFactory;import org.zkoss.zk.ui.sys.WebAppCtrl;import org.zkoss.zk.ui.sys.RequestInfo;import org.zkoss.zk.ui.impl.RequestInfoImpl;/** * Used to post-process the response into a ZK page. * It is useful if you have a servlet using servlets, JSP or other * technology. * * <p>How to use: * <ul> * <li>Decorates the servlet to embed the ZK components and * attributes, such as zk:onClick="...".</li> * <li>Maps the servlet to the filter in web.xml</li> * </ul> * * @author tomyeh */public class DHtmlLayoutFilter implements Filter {	private static final Log log = Log.lookup(DHtmlLayoutFilter.class);	private ServletContext _ctx;	private String _ext = "html";	private String _charset = "UTF-8";	private void process(HttpServletRequest request,	HttpServletResponse response, String content)	throws ServletException, IOException {		if (log.debugable()) log.debug("Content to filter:\n"+content);		final WebManager webman = WebManager.getWebManager(_ctx);		final WebApp wapp = webman.getWebApp();		final WebAppCtrl wappc = (WebAppCtrl)wapp;		final Session sess = webman.getSession(_ctx, request);		final Object old = I18Ns.setup(sess, request, response, _charset);		try {			final Desktop desktop = webman.getDesktop(sess, request, null);			final RequestInfo ri = new RequestInfoImpl(				wapp, sess, desktop, request, null);			final UiFactory uf = wappc.getUiFactory();			final PageDefinition pagedef =				uf.getPageDefinitionDirectly(ri, content, _ext);			final Page page = uf.newPage(ri, pagedef, null);			final Execution exec =				new ExecutionImpl(_ctx, request, response, desktop, page);			wappc.getUiEngine()				.execNewPage(exec, pagedef, page, response.getWriter());		} finally {			I18Ns.cleanup(request, old);		}	}	//-- Filter --//	public void doFilter(ServletRequest request, ServletResponse response,	FilterChain chain) throws IOException, ServletException {		final StringWriter sw = new StringWriter(4096*2);		chain.doFilter(request,			BufferedResponse.getInstance(response, sw));		process((HttpServletRequest)request,			(HttpServletResponse)response, sw.toString());	}	public void destroy() {	}	public final void init(FilterConfig config) throws ServletException {		_ctx = config.getServletContext();		final String ext = config.getInitParameter("extension");		if (ext != null && ext.length() > 0)			_ext = ext;		final String cs = config.getInitParameter("charset");		if (cs != null)			_charset = cs.length() > 0 ? cs: null;	}}

⌨️ 快捷键说明

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