List 序列化与反序列化到struts2的<s:hidden>变量
实现方法:
1、在Action类添加如下get/set方法,可以不需要属性:
2、把在要序列化的字段添加到form中
hidden标签用来向act
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>变量
原文地址:http://blog.csdn.net/wpydaguan/article/details/45220025