SessionHelper
问题描述:
strut2 的织入 Session 为原始 Map 类型,没有泛型化,在添加属性时就会有一个恼人的警告。
功能:
1、安全的消除警告
2、插入时检查类型,如果不符就提前报错(免得取值时才报转换异常的错误)
源代码:
package com.gq.util;import java.util.Map;public class SessionHelper {private Map session;private Class valueType;private SessionHelper( Map session, Class valueType ){this.session = session;this.valueType = valueType;}public static SessionHelper newInstance( Map session, Class valueType ){// valid parameterif( session == null ){throw new NullPointerException("session can't be null, but is null.");}if( valueType == null ){throw new NullPointerException("valueType can't be null, but is null.");}return new SessionHelper( session, valueType );}@SuppressWarnings("unchecked")// safe cast, because just put object of calss what you want.public void putIntoSession( Object key, Object value ){// valid parameterif( key == null || value == null ){throw new NullPointerException("key and value must not be null.");}// valid value's type weather what you wantif( value.getClass() != valueType ){throw new RuntimeException( "need class: " + valueType.getName() + " but is: " + value.getClass().getName() );}session.put(key, value);}}
使用示例:
//session.put(USER_SESSION_KEY, user);
SessionHelper.newInstance( session, User.class ).putIntoSession( USER_SESSION_KEY, user );
SessionHelper相关推荐
- Hibernate:不容易理解的 lock 和 merge
背景 lock 和 merge 在字面上很容易理解它们的语义,不过它们的实际行为所代表的语义范围要大一点,本文就简单的记录下来,还请朋友们多批评和指正. Lock 官方的注释 1 /** 2 * Ob ...
- 网易云信集成视频教程(三):如何通过SDK实现自定义消息?
上期我们介绍了Android如何通过Uikit集成单聊模块,第三期视频教程我们将教大家如何通过SDK实现自定义消息. 前期准备 从官网开发文档自定义消息流程(https://dev.yunxin.16 ...
- MVC之ActionFilterAttribute自定义属性
ActionFilterAttribute里有OnActionExecuting方法,跟Controller一样, 同是抽象实现了IActionFilter接口. // 登录认证特性 public c ...
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
安装MiniProfiler 在MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)文章中下载了它的源码,调试模式下打开一个页面都要再2.5秒以上,所以使用MiniProfile ...
- onlyoffice回调函数controller方式实现
原文同步自作者博客:https://www.daxueyiwu.com/post/706 springboot实现的onlyoffice协同编辑网盘项目可以去作者博客. 上代码: //新建报告@Get ...
- asp.net mvc 用Redis实现分布式集群共享Session。
1.这两天研究Redis搞分布式session问题,网上找的资料都是用ServiceStack.Redis来实现的,但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次,因为官网开 ...
- 一个简单的C#获取Session、设置Session类文件
一个简单的C#获取Session.设置Session类文件,本类主要实现大家最常用的两个功能: 1.GetSession(string name)根据session名获取session对象: 2.Se ...
- NS2相关学习——完成一个新协议(3)
在前面已经基本学习了怎么完成一个新协议(一个神奇的ping协议,然鹅还是有点懵...) 接下来继续学习相关知识 接着上一部分从1开始 1.必要的修改 如果想要添加添加新的代理程序,就需要修改NS源文件 ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能...
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来完善我们的登录功能 项目准备 我们用的工具是:VS 2013 + SqlServer 20 ...
最新文章
- 这5个数学猜想最早在30年前提出,如今AI证明它们都错了
- Android 检查设备是否存在 导航栏 NavigationBar
- 华为鸿蒙系统智能手机_余承东再度确认:鸿蒙系统将适配到华为手机上
- 如何在PHP中实现链式方法调用
- 第三章:使用 FildElements 来练习元素定位
- Apache Parquet 与Apache ORC简介
- shell实现txt转换excel
- 工单管理软件,免费工单管理系统
- linux系统下find删除目录下除一文件外的所有文件
- 互联网快讯:饿了么宣布成立蓝骑士智囊团;极米高性能产品获好评;OPPO Reno7系列正式发布
- python中序列_python中什么是序列
- win10打开软件提示无法成功完成操作 因为文件包含病毒
- 【名词】DAU和MAU
- 201911-202004《JavaScript设计模式》读书笔记
- MDX语句(初学者)
- C++之string类字符串连接
- c 语言 验证码识别算法,一个简单的文件传输验证码识别c/s实现
- 欧美风融资PPT模板
- 【附源码】Java计算机毕业设计高校班主任班级管理系统(程序+LW+部署)
- luogu P3750 [六省联考 2017]分手是祝愿
热门文章
- 领域应用 | ​英文抗生素药物医学知识图谱 IASO1.0 版发布 线上试用正式启动
- 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别
- DSSM、CNN-DSSM、LSTM-DSSM等深度学习模型在计算语义相似度上的应用+距离运算
- java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
- 《Science》日本科学家利用干细胞诱导成功了大鼠生殖细胞
- mybatis postgresql insert后返回自增id
- CentOS6实现路由器功能
- 面向对象(特点)、局部变量与全局变量的区别、匿名对象、构造函数、
- Openstack的RPC通信代码调用架构
- 为什么0.1无法被二进制小数精确表示?