码迷,mamicode.com
首页 > 其他好文 > 详细

List 序列化与反序列化到struts2的<s:hidden>变量

时间:2015-04-23 13:16:30      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:java   struts2   存储   序列化   反序列化   

List 序列化与反序列化到struts2的<s:hidden>变量

实现方法:

1、在Action类添加如下get/set方法,可以不需要属性:

技术分享

2、把在要序列化的字段添加到form中

技术分享

hidden标签用来向action传递参数

jsp页面要序列化的字段要与Action的get/set方法名称对应。

serversPayExpendList查询出的充值消费新增变量,是要序列化的原变量,页面通过getSerServersPayExpendList()方法序列化serversPayExpendList变量的值,序列后以字符串的形式存储到页面的serServersPayExpendList中,当导出报表时,页面的serServersPayExpendList变量通过setSerServersPayExpendList()方法反序列化后再次存储到serServersPayExpendList变量中,这样查询后的信息可以再次利用,不用再从数据库查询,可以提高查询和导出报表的运行速度。

用另一个变量存储序列化值的原因,strut2不支持同一个页面存在两个相同名称的变量,序列化成字段串也便于传输。

序列化和反序列化的方法如下:

技术分享技术分享


附录:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 序列化工具类
 * @author file
 * @version 1.0
 * @since 2013-04-11 
 */
@SuppressWarnings("restriction")
public final class SerializableUtil {
	/**
	 * base64 加密
	 */
	private static final BASE64Encoder BASE64_ENCODER = new BASE64Encoder();
	/**
	 * base64 解密
	 */
	private static final BASE64Decoder BASE64_DECODER = new BASE64Decoder();
	/**
	 * 序列化
	 * @param obj 对象
	 * @return 字符串
	 */
	public static <T> String serialize(T obj) {
		
		 ObjectOutputStream oos = null;
		 ByteArrayOutputStream baos = new ByteArrayOutputStream();
		  //序列化
		 try {
				oos = new ObjectOutputStream(baos);
				oos.writeObject(obj);	
				return  BASE64_ENCODER.encodeBuffer(baos.toByteArray());
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				try {
					if(oos!=null)
						oos.close();
					if(baos!=null)
						baos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}  
			
			}

		return null;
	}
	/**
	 * 反序列化
	 * @param str 字符串
	 * @param clazz 返回的对象类
	 * @return 对象
	 */
	public static <T> T unSerialize(String str,Class<T> clazz) {
		 
		 ByteArrayInputStream bais = null;
		 ObjectInputStream ois = null;
		 try {
			 byte[] bytes = BASE64_DECODER.decodeBuffer(str);
			 bais = new ByteArrayInputStream(bytes);
			 ois = new ObjectInputStream(bais);
			 @SuppressWarnings("unchecked")
			T object = (T) ois.readObject();
			return object;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}finally{
			 try {
				 if(ois!=null)
					 ois.close();
				 if(bais!=null)
					 bais.close();
			} catch (IOException e) {
				e.printStackTrace();
			}  
			
		} 
		return null;
	}

}




List 序列化与反序列化到struts2的<s:hidden>变量

标签:java   struts2   存储   序列化   反序列化   

原文地址:http://blog.csdn.net/wpydaguan/article/details/45220025

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!