问题描述:

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相关推荐

  1. Hibernate:不容易理解的 lock 和 merge

    背景 lock 和 merge 在字面上很容易理解它们的语义,不过它们的实际行为所代表的语义范围要大一点,本文就简单的记录下来,还请朋友们多批评和指正. Lock 官方的注释 1 /** 2 * Ob ...

  2. 网易云信集成视频教程(三):如何通过SDK实现自定义消息?

    上期我们介绍了Android如何通过Uikit集成单聊模块,第三期视频教程我们将教大家如何通过SDK实现自定义消息. 前期准备 从官网开发文档自定义消息流程(https://dev.yunxin.16 ...

  3. MVC之ActionFilterAttribute自定义属性

    ActionFilterAttribute里有OnActionExecuting方法,跟Controller一样, 同是抽象实现了IActionFilter接口. // 登录认证特性 public c ...

  4. 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗

    安装MiniProfiler 在MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)文章中下载了它的源码,调试模式下打开一个页面都要再2.5秒以上,所以使用MiniProfile ...

  5. onlyoffice回调函数controller方式实现

    原文同步自作者博客:https://www.daxueyiwu.com/post/706 springboot实现的onlyoffice协同编辑网盘项目可以去作者博客. 上代码: //新建报告@Get ...

  6. asp.net mvc 用Redis实现分布式集群共享Session。

    1.这两天研究Redis搞分布式session问题,网上找的资料都是用ServiceStack.Redis来实现的,但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次,因为官网开 ...

  7. 一个简单的C#获取Session、设置Session类文件

    一个简单的C#获取Session.设置Session类文件,本类主要实现大家最常用的两个功能: 1.GetSession(string name)根据session名获取session对象: 2.Se ...

  8. NS2相关学习——完成一个新协议(3)

    在前面已经基本学习了怎么完成一个新协议(一个神奇的ping协议,然鹅还是有点懵...) 接下来继续学习相关知识 接着上一部分从1开始 1.必要的修改 如果想要添加添加新的代理程序,就需要修改NS源文件 ...

  9. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能...

    索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引 简述 今天我们来完善我们的登录功能 项目准备 我们用的工具是:VS 2013 + SqlServer 20 ...

最新文章

  1. 这5个数学猜想最早在30年前提出,如今AI证明它们都错了
  2. Android 检查设备是否存在 导航栏 NavigationBar
  3. 华为鸿蒙系统智能手机_余承东再度确认:鸿蒙系统将适配到华为手机上
  4. 如何在PHP中实现链式方法调用
  5. 第三章:使用 FildElements 来练习元素定位
  6. Apache Parquet 与Apache ORC简介
  7. shell实现txt转换excel
  8. 工单管理软件,免费工单管理系统
  9. linux系统下find删除目录下除一文件外的所有文件
  10. 互联网快讯:饿了么宣布成立蓝骑士智囊团;极米高性能产品获好评;OPPO Reno7系列正式发布
  11. python中序列_python中什么是序列
  12. win10打开软件提示无法成功完成操作 因为文件包含病毒
  13. 【名词】DAU和MAU
  14. 201911-202004《JavaScript设计模式》读书笔记
  15. MDX语句(初学者)
  16. C++之string类字符串连接
  17. c 语言 验证码识别算法,一个简单的文件传输验证码识别c/s实现
  18. 欧美风融资PPT模板
  19. 【附源码】Java计算机毕业设计高校班主任班级管理系统(程序+LW+部署)
  20. luogu P3750 [六省联考 2017]分手是祝愿

热门文章

  1. 领域应用 | ​英文抗生素药物医学知识图谱 IASO1.0 版发布 线上试用正式启动
  2. 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别
  3. DSSM、CNN-DSSM、LSTM-DSSM等深度学习模型在计算语义相似度上的应用+距离运算
  4. java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
  5. 《Science》日本科学家利用干细胞诱导成功了大鼠生殖细胞
  6. mybatis postgresql insert后返回自增id
  7. CentOS6实现路由器功能
  8. 面向对象(特点)、局部变量与全局变量的区别、匿名对象、构造函数、
  9. Openstack的RPC通信代码调用架构
  10. 为什么0.1无法被二进制小数精确表示?