通过session的id号获取对应的session
说说为什么要用session!!!
每次访问端通过普通http协议访问tomcat时,访问端包括网页或Android app等,tomcat都会自动生成一个不同的session,而且session的id都不同,一般存活周期五个小时
web的便捷之处就是只要浏览器不关闭或者不注销session,session的id都是固定的,
可是Android的就是个奇葩,每次访问id都会变,可是为什么Android还要执意用session呢?
因为我当时想做一个验证功能,让验证码存在后端的某个地方,同时还可以自动销毁,方便获取
因为servlet的版本升级原因,直接通过session的id获取之前已经存在的session的这个方法已经被官方api抛弃了,所以,想要实现这个给功能,需要自己手动创造这么个方法!!!
话不多说,上代码
步骤1.
找个地方写两个Java的类文件
第一个类:
代码:
import javax.servlet.http.HttpSession;
import java.util.HashMap; public class MySessionContext {
private static HashMap mymap = new HashMap();
public static synchronized void AddSession(HttpSession session) {
if (session != null) {
mymap.put(session.getId(), session);
}
}
public static synchronized void DelSession(HttpSession session) {
if (session != null) {
mymap.remove(session.getId());
}
}
public static synchronized HttpSession getSession(String session_id) {
if (session_id == null)
return null;
return (HttpSession) mymap.get(session_id);
}
}

第二个类:
代码:
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener; public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
MySessionContext.AddSession(httpSessionEvent.getSession());
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
HttpSession session = httpSessionEvent.getSession();
MySessionContext.DelSession(session);
}
}

步骤2:
写好后,去web.xml文件里写一个监听器,监听器的位置不要写错,中间白色的是写上面的第二个类的路径,我把它放在mySession的文件夹里,
所以才写mySession.MySessionListener
代码:
<listener>
<listener-class>mySession.MySessionListener</listener-class>
</listener>

好了,代码过程部分都好了,现在需要去调用了
现在假设你知道一个session 的id为 a,a是个String类型数据;
那么可通过下面的第三步获得session
步骤3:
HttpSession session = MySessionContext.getSession(a);

这个session就是你要根据id找的session了,如果你之前在session通过方法setAttribute(“key”,“value”)存进去了数据
那么你就可以直接用getAttribute("key")获取这个数据
这时你要注意了,getAttribute("key")获取的值是object类型的,如果你要转成String,
你只需要在获取的值后面加 .String()方法进行转换!!!!
通过session的id号获取对应的session的更多相关文章
- JSTL获取Session的ID与获取文件的真实路径与项目名称
今天在测试集群配置的时候想到session共享,因此想要获取sessionID,可以通过下面方法: ${pageContext.session.id} 获取文件的真实路径: <%=request ...
- 黄聪:WordPress 多站点建站教程(五):获取子站点用户信息(通过输入站点ID号来获取该站点的所有用户)
得到站点ID为1的用户 <ul> <?php $blogusers = get_users('blog_id=1'); foreach ($blogusers as $user) { ...
- 现代浏览器原生js获取id号方法
<div id="tests" class="a b c" style="color:#f00">123</div> ...
- 【从翻译mos文章】正在实施的获取job的 session id
正在实施的获取job的 session id 参考原始: How to get the session Id of the Running Job (Doc ID 1604966.1) 申请: Ora ...
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含着CPU的生产日期,版本号,型号等等,那么,在我们的这款友善之臂Tiny4412的板子上,我的这个CPU的ID又是多少呢?从我 ...
- 使用IO映射的方式获取tiny4412板子上的ID号
在以前的文章中,有一篇 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号 在那篇文章中,具体可以参考.那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将 ...
- 如何获取板子上独有的ID号EXYNOS4412/Imx6ul【转】
本文转载自:http://blog.csdn.net/u010871058/article/details/75637175 每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含 ...
- python获取进程id号:
python获取进程id号: os.getpid()获取当前进程id os.getppid()获取父进程id
- Linux进程ID号--Linux进程的管理与调度(三)【转】
Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一. 该数据结 ...
随机推荐
- composer 镜像地址
composer config -g repo.packagist composer https://packagist.composer-proxy.orgcomposer config -g re ...
- WebDriver中的操作使用
1.WebDriver中使用jquery假如设定jquery包的路径为path,则程序如下: String jquery=null; FileInputStream input = new FileI ...
- Linux 下 Samba 服务器搭建
初学,分享 环境和条件--- 虚拟机:VMware虚拟机 系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:0 ...
- Xshell连接不上阿里云服务器
心血来潮买了一台1核2g内存,外加40g系统盘的阿里云ecs服务器,在配置xshell连接服务器一直无法连接,试了很多种方法,各种心累,不过最后还是找到了原因,是因为在服务器上没有配置安全组规则,附上 ...
- .gitignore语法
没嘛用 “#”表示注释 “!”表示取消忽略 空行不作匹配 若匹配语句中无“/ ” ,便将其视为一个 glob匹配,如'abc'可以匹配 ' abc' , 'cd/abc' , 'ef/abcde.tx ...
- ABP学习之旅
1.我使用ABP的启动模板(http://www.aspnetboilerplate.com/Templates)来创建一个Web应用程序. 2.加载项目解决方案 在abp根据模板创建解决方案后,编译 ...
- maven 编码 UTF-8 的不可映射字符
maven编译时报错,后面发现代码是用GBK编码编写,maven默认是用utf-8来编译.修改pom.xml <build> <plugins> <plugin> ...
- gensim和jieba分词进行主题分析,文本相似度
参考链接:https://blog.csdn.net/whzhcahzxh/article/details/17528261 demo1:结巴分词: # 构造分词库,格式如下: ''' [['楼下', ...
- 即时消息Toast和对话框
public static Toast makeText(Context context, CharSequence text, int duration) protected void onDest ...
- extjs__(grid Panel绑定数据)
1.修改面板名称 双击My Panel 就可以进行修改 2拖入一个grid panel绑定数据 3.创建一个model 只是为了创建一个模型 相当于java中的模型层 只是数据的一个标准 4 ...