在项目中需要保存客户的信息到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...
它巧妙地利用了Electron框架的核心特性,辅以Chrome的GUI,为开发者们提供了一个极为便捷的桌面应用开发环境。该项目不仅功能强大,而且支持多种编程语言,使得开发者能够灵活地应对不同的开发需求。 具体来说,该...
在本项目"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 ...通过巧妙地整合这些元素,开发者可以创建一个强大且灵活的平台,满足多样化的企业和组织需求。
本项目是一套完整的实战型企业级创新项目学习源码,它将Java、Vue、TypeScript等多种编程语言巧妙融合,为学习者提供了一个接近真实开发环境的实践平台。 Java作为后端开发中广泛使用的语言,其稳定性和跨平台特性...
本项目正是一个综合了多种技术栈的软件开发设计案例,它巧妙地融合了Java、Vue、TypeScript、HTML和JavaScript等现代web开发技术,为构建复杂的互联网应用提供了一套完整的解决方案。 首先,Java作为后端开发的主流...
在一个多语言的环境中,CSS同样需要应对不同语言的长度和排版差异,以保证良好的用户体验。 Python是项目后端的主要语言,81个Python文件涉及业务逻辑处理、服务器端交互以及数据管理等方面。Python在处理复杂算法...
在这个主题"树形结构ssh+mysql+json"中,我们将探讨如何结合SSH(Spring、Struts、Hibernate)框架、MySQL数据库和JSON(JavaScript Object Notation)格式来实现一个支持N级菜单的加、删、改、查功能。 首先,SSH...
本源码项目便是针对这一趋势而设计的,它巧妙地将Flask框架与微信小程序相结合,提供了一个完整的跨平台开发解决方案。Flask是一个轻量级的Web应用框架,它以其简单、灵活的特点而备受开发者青睐。微信小程序则是...