亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? abstractjasperreportssingleformatview.java

?? spring framework 2.5.4源代碼
?? JAVA
字號:
/*
 * Copyright 2002-2008 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.servlet.view.jasperreports;

import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperPrint;

import org.springframework.ui.jasperreports.JasperReportsUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.util.WebUtils;

/**
 * Extends <code>AbstractJasperReportsView</code> to provide basic rendering logic
 * for views that use a fixed format, e.g. always PDF or always HTML.
 *
 * <p>Subclasses need to implement two template methods: <code>createExporter</code>
 * to create a JasperReports exporter for a specific output format, and
 * <code>useWriter</code> to determine whether to write text or binary content.
 *
 * @author Rob Harrop
 * @author Juergen Hoeller
 * @since 1.1.5
 * @see #createExporter()
 * @see #useWriter()
 */
public abstract class AbstractJasperReportsSingleFormatView extends AbstractJasperReportsView {

	/**
	 * Initial size for the output array.
	 */
	private static final int OUTPUT_BYTE_ARRAY_INITIAL_SIZE = 4096;


	protected boolean generatesDownloadContent() {
		return !useWriter();
	}

	/**
	 * Perform rendering for a single Jasper Reports exporter, that is,
	 * for a pre-defined output format.
	 */
	protected void renderReport(JasperPrint populatedReport, Map model, HttpServletResponse response)
			throws Exception {

		JRExporter exporter = createExporter();

		// Set exporter parameters - overriding with values from the Model.
		Map mergedExporterParameters = mergeExporterParameters(model);
		if (!CollectionUtils.isEmpty(mergedExporterParameters)) {
			exporter.setParameters(mergedExporterParameters);
		}

		if (useWriter()) {
			renderReportUsingWriter(exporter, populatedReport, response);
		}
		else {
			renderReportUsingOutputStream(exporter, populatedReport, response);
		}
	}

	/**
	 * Merges the configured JRExporterParameters with any specified in the supplied model data.
	 * JRExporterParameters in the model override those specified in the configuration.
	 * @see #setExporterParameters(java.util.Map)
	 */
	protected Map mergeExporterParameters(Map model) {
		Map mergedParameters = new HashMap();
		Map convertedExporterParameters = getConvertedExporterParameters();
		if (!CollectionUtils.isEmpty(convertedExporterParameters)) {
			mergedParameters.putAll(convertedExporterParameters);
		}
		for (Iterator it = model.keySet().iterator(); it.hasNext();) {
			Object key = it.next();
			if (key instanceof JRExporterParameter) {
				Object value = model.get(key);
				Object convertedValue = convertParameterValue((JRExporterParameter) key, value);
				mergedParameters.put(key, convertedValue);
			}
		}
		return mergedParameters;
	}

	/**
	 * We need to write text to the response Writer.
	 * @param exporter the JasperReports exporter to use
	 * @param populatedReport the populated <code>JasperPrint</code> to render
	 * @param response the HTTP response the report should be rendered to
	 * @throws Exception if rendering failed
	 */
	protected void renderReportUsingWriter(
			JRExporter exporter, JasperPrint populatedReport, HttpServletResponse response) throws Exception {

		// Copy the encoding configured for the report into the response.
		String contentType = getContentType();
		String encoding = (String) exporter.getParameter(JRExporterParameter.CHARACTER_ENCODING);
		if (encoding != null) {
			// Only apply encoding if content type is specified but does not contain charset clause already.
			if (contentType != null && contentType.toLowerCase().indexOf(WebUtils.CONTENT_TYPE_CHARSET_PREFIX) == -1) {
				contentType = contentType + WebUtils.CONTENT_TYPE_CHARSET_PREFIX + encoding;
			}
		}
		response.setContentType(contentType);

		// Render report into HttpServletResponse's Writer.
		JasperReportsUtils.render(exporter, populatedReport, response.getWriter());
	}

	/**
	 * We need to write binary output to the response OutputStream.
	 * @param exporter the JasperReports exporter to use
	 * @param populatedReport the populated <code>JasperPrint</code> to render
	 * @param response the HTTP response the report should be rendered to
	 * @throws Exception if rendering failed
	 */
	protected void renderReportUsingOutputStream(
			JRExporter exporter, JasperPrint populatedReport, HttpServletResponse response) throws Exception {

		// Apply the content type as specified - we don't need an encoding here.
		response.setContentType(getContentType());

		// Render report into local OutputStream.
		// IE workaround: write into byte array first.
		ByteArrayOutputStream baos = new ByteArrayOutputStream(OUTPUT_BYTE_ARRAY_INITIAL_SIZE);
		JasperReportsUtils.render(exporter, populatedReport, baos);

		// Write content length (determined via byte array).
		response.setContentLength(baos.size());

		// Flush byte array to servlet output stream.
		ServletOutputStream out = response.getOutputStream();
		baos.writeTo(out);
		out.flush();
	}


	/**
	 * Create a JasperReports exporter for a specific output format,
	 * which will be used to render the report to the HTTP response.
	 * <p>The <code>useWriter</code> method determines whether the
	 * output will be written as text or as binary content.
	 * @see #useWriter()
	 */
	protected abstract JRExporter createExporter();

	/**
	 * Return whether to use a <code>java.io.Writer</code> to write text content
	 * to the HTTP response. Else, a <code>java.io.OutputStream</code> will be used,
	 * to write binary content to the response.
	 * @see javax.servlet.ServletResponse#getWriter()
	 * @see javax.servlet.ServletResponse#getOutputStream()
	 */
	protected abstract boolean useWriter();

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品三级在线观看| 欧美日韩在线观看一区二区 | av亚洲精华国产精华精华| 91精品国产品国语在线不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲欧美日韩人成在线播放| 国产在线不卡一卡二卡三卡四卡| 欧美日韩美女一区二区| 亚洲男人天堂一区| 在线观看日韩国产| 亚洲欧美日韩电影| 亚洲欧洲日产国码二区| 国产一区二区精品久久99| 国产99久久久久| 国产视频一区在线播放| 国产一区二区精品久久| 精品91自产拍在线观看一区| 另类综合日韩欧美亚洲| 欧美一级生活片| 男男gaygay亚洲| 日韩三级在线观看| 久久99国产精品免费网站| 精品久久人人做人人爰| 综合久久久久久久| 色婷婷av一区二区三区gif| 日韩毛片一二三区| 91国模大尺度私拍在线视频| 亚洲午夜久久久久久久久久久 | 91性感美女视频| 亚洲精品日韩专区silk| 欧美日韩国产高清一区二区三区 | 国产精品成人一区二区三区夜夜夜| 国内一区二区在线| 中文字幕五月欧美| 欧美日韩一区二区在线观看视频| 天使萌一区二区三区免费观看| 国产另类ts人妖一区二区| 欧美国产视频在线| 欧美人妖巨大在线| 国产精品中文欧美| 亚洲国产一二三| 久久一区二区三区四区| 99re视频精品| 久久久不卡影院| 欧美欧美午夜aⅴ在线观看| 激情综合网av| 亚洲综合男人的天堂| 久久中文娱乐网| 欧美日韩免费观看一区三区| 亚洲乱码中文字幕| 99久久精品免费看国产免费软件| 日韩精品一二区| 国产欧美1区2区3区| 91.com视频| 欧美性猛片xxxx免费看久爱| 国产不卡视频在线播放| 国产日韩成人精品| 国产麻豆一精品一av一免费 | 日韩一级在线观看| 99re亚洲国产精品| 国产精品一区在线| 久久99久久精品| 石原莉奈在线亚洲三区| 一区二区三区四区在线免费观看 | 欧美精品一卡两卡| 91免费观看在线| 色哟哟一区二区| 色综合视频在线观看| 99在线视频精品| 成人综合日日夜夜| voyeur盗摄精品| 成人高清伦理免费影院在线观看| 国产精品资源在线看| 正在播放亚洲一区| 欧洲生活片亚洲生活在线观看| 99久久精品免费看国产| 99久久久久免费精品国产 | 日韩美一区二区三区| 欧美精品日韩综合在线| 在线不卡欧美精品一区二区三区| 欧美日韩午夜在线视频| 激情综合网av| 99热精品一区二区| 91啦中文在线观看| 在线亚洲精品福利网址导航| 欧美日精品一区视频| 欧美日韩视频第一区| 国产99久久久国产精品潘金| 成人av电影观看| 欧洲国内综合视频| 日韩免费看网站| 亚洲国产精品传媒在线观看| 亚洲免费在线看| 久久激五月天综合精品| 国产91富婆露脸刺激对白| 99国产一区二区三精品乱码| 欧美体内she精视频| 国产精品18久久久久久久久久久久| 粉嫩一区二区三区在线看| 欧美亚洲图片小说| 久久亚区不卡日本| 亚洲综合男人的天堂| 国产高清无密码一区二区三区| 欧美伊人久久久久久久久影院 | 国产精品私人影院| 日韩综合一区二区| 不卡的av在线播放| 日韩精品专区在线影院重磅| 伊人色综合久久天天人手人婷| 久久精品国内一区二区三区| 一本一道综合狠狠老| 久久女同精品一区二区| 三级久久三级久久久| 色综合激情久久| 中文字幕av免费专区久久| 国内一区二区视频| 日韩午夜在线观看视频| 三级久久三级久久久| 欧美色精品在线视频| 一区二区三区波多野结衣在线观看| 国产成人综合视频| 国产欧美精品国产国产专区| 国模冰冰炮一区二区| 国产女人18水真多18精品一级做| 精品一区二区三区日韩| 国产精品综合一区二区三区| 欧美不卡在线视频| 麻豆精品在线观看| 久久久久久亚洲综合影院红桃| 国产亚洲一区二区三区在线观看| 免费高清不卡av| 久久久美女毛片| 国产成人8x视频一区二区| 国产色产综合色产在线视频| 国产精品1区2区3区在线观看| 中文av字幕一区| av电影天堂一区二区在线| 一区二区在线观看av| 欧美在线观看你懂的| 亚洲高清一区二区三区| 日韩视频在线观看一区二区| 久久超碰97中文字幕| 日本一区二区在线不卡| 色综合天天综合色综合av| 亚洲成人在线网站| 久久综合久久久久88| kk眼镜猥琐国模调教系列一区二区| ㊣最新国产の精品bt伙计久久| 欧美日韩视频专区在线播放| 极品少妇xxxx精品少妇偷拍| 中文字幕一区二区三区不卡| 欧美色图免费看| 国产v日产∨综合v精品视频| 亚洲欧美日韩人成在线播放| 欧美久久久影院| 成人激情小说网站| 免费成人在线影院| 亚洲女性喷水在线观看一区| www久久久久| 欧美日韩免费观看一区二区三区| 高清免费成人av| 日韩va亚洲va欧美va久久| 自拍偷在线精品自拍偷无码专区| 欧美一区二区三区电影| 色综合久久中文字幕综合网| 狠狠色狠狠色综合日日91app| 亚洲一区在线观看免费| 国产精品理伦片| 国产性做久久久久久| 欧美精品乱码久久久久久按摩| 97精品久久久午夜一区二区三区 | 看电视剧不卡顿的网站| 亚洲欧美精品午睡沙发| 亚洲国产激情av| 精品理论电影在线| 欧美片网站yy| 9191国产精品| 欧美日韩高清一区二区不卡 | 亚洲黄一区二区三区| 国产精品的网站| 中文字幕一区视频| 不卡高清视频专区| av午夜一区麻豆| 91视频国产观看| 99riav久久精品riav| 欧美成人精品1314www| 日韩一区二区三区精品视频| 欧美精品色一区二区三区| 欧美猛男男办公室激情| 在线不卡一区二区| 日韩免费一区二区三区在线播放| 精品欧美一区二区久久| 欧美videos大乳护士334| 亚洲精品在线观看视频| 久久久国产精品午夜一区ai换脸| 国产日产欧美一区二区视频| 国产精品沙发午睡系列990531| 亚洲男女毛片无遮挡| 午夜视频一区二区三区| 国产欧美精品一区aⅴ影院 |