List 序列化与反序列化到struts2的<s:hidden>变量
来源:互联网 发布:java调用方法 编辑:程序博客网 时间:2024/05/16 08:33
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;}}
1 0
- List 序列化与反序列化到struts2的<s:hidden>变量
- Struts2标签s:hidden的使用
- Gson序列化与反序列化成员变量为Map<String,Object>的类对象
- 数据的序列化与反序列化类
- JSON序列化与反序列化到文件
- 序列化与反序列
- 序列化与反序列
- POJO与JSON的序列化与反序列化
- Unity与C#的序列化与反序列化
- Redis缓存Object,List对象 - Java 对象和List的序列化和反序列化
- PHP的序列化与反序列化的使用
- Jack's Notes6——序列化与反序列化示例
- C#对象的 Xml序列化与反序列化
- 浅谈序列化与反序列化的理解
- Xml的序列化与反序列化
- DataTable的序列化与反序列化.
- .Net 中序列化与反序列化的应用
- Symbian 流的对象序列化与反序列化
- 软件测试-基础篇
- 【c语言】将“China”译成密码,密码规律:用原来字母后边第4个字母代替原来的字母。
- xcode 创建 workspace 过程
- 第六周项目 3 完成第8章知识点的思维导图
- 【c语言】设圆半径r = 1.5,圆柱高h = 3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
- List 序列化与反序列化到struts2的<s:hidden>变量
- 利用Responsive Nav.js插件制作响应式导航
- 如何合理设置hadoop相关组件的jvm Xmx
- ArcGIS教程:北京54坐标(或西安80)与WGS84的坐标转换
- 【c语言】输入3个数,要求按从小到大顺序输出
- HDU 2850 Load Balancing
- 黑马程序员——Java学习笔记 基础常识
- 【c语言】 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是不转换
- sql 结果折分,一行变多行