论坛首页 Java企业应用论坛

bboss session共享时序列化存储jasperreports报表对象JasperPrint方法

浏览 2516 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-05-11   最后修改:2014-05-11
bboss session共享时序列化存储jasperreports报表对象JasperPrint方法bboss session共享组件使用方法介绍
由于JasperPrint对象有点特殊,序列化存储到session时,必须采用java自带的序列化机来序列化和还原JasperPrint对象,否则bboss序列化机制无法实现对原始JasperPrint对象的序列化。具体的设置JasperPrint对象到共享session中的方法如下:

public static void toSession(HttpServletRequest request,String key,JasperPrint jasperPrint) throws IOException
	{
		java.io.ByteArrayOutputStream out = null; 
		java.io.ObjectOutputStream output = null;
		try
		{
			out = new ByteArrayOutputStream(); 
			output = new java.io.ObjectOutputStream(out); 
			output.writeObject(jasperPrint);
			output.flush();
			request.getSession().setAttribute(key, out.toByteArray());
		}
		finally
		{
			try {
				if(out != null)
				{
					out.close();
					out = null;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(output != null)
				{
					output.close();
					output = null;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static JasperPrint getJasperPrint(HttpServletRequest request,String key)
	{
		JasperPrint jasperPrint = null;
	
		java.io.ObjectInputStream output = null;
		java.io.ByteArrayInputStream intput = null;
		try
		{
			byte[] b = (byte[])request.getSession().getAttribute(key); 
			intput = new ByteArrayInputStream(b);
			output = new java.io.ObjectInputStream(intput); 
			jasperPrint = (JasperPrint)output.readObject();
			return jasperPrint;
			
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return null;
		}
		finally
		{
			try {
				if(intput != null)
				{
					intput.close();
					intput = null;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(output != null)
				{
					output.close();
					output = null;
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
   发表时间:2014-05-27  
下文中提供从共享session中存储和读取jasperprint对象的另外一种更加友好的解决方案:
bboss自定义类对象序列化机制介绍
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics