在项目中需要保存客户的信息到Cookie中,因为客户要求针对常用业务操作的操作,用户可以一次设置之后,可以长时间的使用,即使下次登录,客户仍然使用可以使用。在客户登陆需要用户常用业务操作时,首先从Session中获取,如果Session中不存在,从Cookie获取,然后转换为需要的类型。
保存信息一般的可以
有两种设计方案:
(1)将客户的常用设置信息保存数据库
(2)将客户的属性保存本地的Cookie中下次登录时获取。
本人使用Cookie保存信息,客户设置信息,在Struts2 中 Action获取时采用模型驱动(ModenDriver方式),获取设置不是很方便。
在项目的开始本人想保存信息到Cookie,下次登录时从Cookie中获取各字段同时,使用反射转换为相应的数据类型(如枚举,Long等数据类型),之后发现使用json简单,同时减少了使用反射的不安全性。简化了各种操作。
于是本人采用JSon保存信息,将获得客户的设置信息的对象转换为json格式的字符串之后,保存到Cookie中,在用户下载登陆时可以从Cookie中获取。
备注:在存储JSON格式的字符串时必须将双引号转换为单引号,不然获取不到完整的数据。因为字符串是以双引号分割。项目中使用JSON将对象转换为字符串:
/**
* 将一个bean 对象转换为jsonobject对象的字符串
*
* @param ignoreJPATransient 是否忽略的输入的属性
* @param excludes 对象中字符串属性数组
* @param object 需要使用json持久化的对象
* @return
*/
private String jsonBuilder(boolean ignoreJPATransient, String[] excludes, Object object) {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setIgnoreJPATransient(ignoreJPATransient);
jsonConfig.setExcludes(excludes);
JSONArray json = JSONArray.fromObject(object, jsonConfig);
return json.toString();
}
将json字符串转换为对象的方式:
/**
* 将一个json的字符串转换bean对象
*/
private VacationOrderConditionConvertor json2BeanfromCookie() {
//从Cookie中获取数据
String jsonCookies = (String) cookies.get(DEFAULT_USE_QUERY_TYPE_COOKIE);
if (StringUtils.isNotBlank(jsonCookies)) {
// 从JSON字符串转换Bean对象
//备注将json对象存储到Cookie中时由于字符串中有特殊字符串,Cookie中将json对象添加
jsonCookies = jsonCookies.substring(1, jsonCookies.length() - 1);
JSONObject json = JSONObject.fromObject(jsonCookies);
VacationOrderConditionConvertor tmpvc = (VacationOrderConditionConvertor) JSONObject.toBean(json, VacationOrderConditionConvertor.class);
return tmpvc;
}
return null;
}
分享到:
相关推荐
在压缩包中,"新建 文本文档.txt"可能包含了项目的一些说明或者配置信息,而"ajax"可能是一个目录,包含了处理Ajax请求的相关文件,如Struts2的Action类、JavaScript文件或者其他的辅助资源。 综上所述,这个项目...
在本案例中,"Json合并压缩工具"是一个专为处理JSON文件设计的实用程序,它的主要功能包括: 1. **JSON文件合并**:该工具能够将多个独立的JSON文件合并成一个文件。这在需要处理大量JSON数据时特别有用,比如日志...
在这个“三级联动”项目中,这些技术被巧妙地结合在一起,实现了数据的动态交互和展示。 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它的主要职责是处理用户请求,控制应用程序流程,...
本篇将聚焦于如何巧妙地使用`eval`函数来解析JSON对象,虽然在实际开发中,由于安全考虑我们通常会避免使用`eval`,但理解其工作原理对于学习JavaScript和JSON解析至关重要。 首先,JSON对象本质上是符合JSON语法的...
总结来说,wallpaperboard是一个基于Android的开源壁纸应用项目,通过巧妙运用JSON技术,实现了高效的数据获取和展示,为用户提供了丰富的壁纸选择。它的开源性质不仅促进了开发者之间的交流与合作,也为Android开发...
本项目“俄罗斯方块(JSON封装)”巧妙地利用了这两者的优势,实现了在网页和手机上畅玩的经典游戏——俄罗斯方块。下面,我们将详细探讨这一项目中的关键知识点。 1. **HTML5**:HTML5是超文本标记语言的最新版本,...
JSON(JavaScript Object Notation)是...通过这些知识点,开发者可以在C语言环境中高效地处理JSON数据,无论是从服务器接收还是向服务器发送,都能游刃有余。同时,理解这些原理也有助于深入理解JSON格式和C语言编程。
这个Babel插件巧妙地利用了Babel的转换能力,将JSON文件的内容转换为JavaScript对象,无缝集成到源代码中。 首先,让我们了解什么是Babel。Babel是一个广泛使用的JavaScript编译器,它的主要功能是将ES6+(包括最新...
在“DBA项目”中,QJson被用来进行数据的序列化和反序列化,使得数据可以在应用程序与服务器之间有效地传递和存储。 **OpenGL与QPaint:** QtOpenGL模块提供了与OpenGL图形库的接口,用于在Qt应用中实现高性能的3D...
在本项目"Android ExpandableListView+PopupWindow+json"中,这两个组件被巧妙地结合起来,以动态加载来自JSON数据源的信息。 `ExpandableListView`是一个可扩展的列表视图,允许用户展开和折叠各个组,每个组内...
在游戏开发中,字符串切片技术可以被巧妙地应用于多个方面,包括但不限于游戏资源的本地化、游戏状态的记录与回放、以及游戏内的对话系统等。下面将详细探讨这些应用场景,并结合具体实例来阐述Python字符串切片技术...
这个模具排程系统是Java开发中的一个优秀实例,它巧妙地融合了Struts2的控制层优势、Json的轻量化数据传输和MySQL的强大数据库管理能力,为企业提供了一套完整的模具生产管理工具。对于初学者而言,这个项目不仅展示...
在实际应用中,dataclasses_json库提供了一个`@dataclass_json`装饰器,它可以附加到数据类上,实现与JSON的互操作性。例如: ```python from dataclasses import dataclass from dataclasses_json import data...
Next.js 是一个由 Vercel 公司维护的开源 JavaScript 框架,主要用于构建服务器端渲染(SSR)和静态生成(SSG)的 Web ...通过巧妙地整合这些元素,开发者可以创建一个强大且灵活的平台,满足多样化的企业和组织需求。
在这个主题"树形结构ssh+mysql+json"中,我们将探讨如何结合SSH(Spring、Struts、Hibernate)框架、MySQL数据库和JSON(JavaScript Object Notation)格式来实现一个支持N级菜单的加、删、改、查功能。 首先,SSH...
这个应用巧妙地利用了json-server作为其后端,提供了一个模拟RESTful API的服务,使得在开发阶段无需真实的服务器环境也能进行数据操作。json-server是一个快速、开箱即用的工具,可以创建JSON文件,通过简单的...
这个项目是一个基于Android平台的二手商品展示应用,旨在为用户提供一个方便、快捷的二手商品交易平台。通过这个应用,用户可以浏览各种二手商品,进行购买、出售或者交换。项目的UI设计被认为是非常经典的,这通常...
“shepherd”这个名字来源于现实生活中的牧羊人,其职责是引领和指导羊群,这个概念被巧妙地应用到软件设计中,用于指导用户如何在应用中进行操作。通过这个项目,开发者可以为他们的应用程序添加自定义的向导或提示...
在电商项目框架搭建中,Android平台的开发是一个关键部分,涉及到Activity与Fragment的协同工作以及模块化开发。这里,我们将深入探讨这两个核心知识点,并结合源码分析,来理解如何高效地构建电商应用。 首先,...
Vue.js是一款轻量级的JavaScript框架,因其易学易用和高性能的特点,在前端开发中广泛应用。在GPT-Translator中,Vue.js很可能被用来构建用户界面,提供动态、实时的翻译反馈。 综上所述,GPT-Translator是一款集成...