说说为什么要用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的更多相关文章

  1. JSTL获取Session的ID与获取文件的真实路径与项目名称

    今天在测试集群配置的时候想到session共享,因此想要获取sessionID,可以通过下面方法: ${pageContext.session.id} 获取文件的真实路径: <%=request ...

  2. 黄聪:WordPress 多站点建站教程(五):获取子站点用户信息(通过输入站点ID号来获取该站点的所有用户)

    得到站点ID为1的用户 <ul> <?php $blogusers = get_users('blog_id=1'); foreach ($blogusers as $user) { ...

  3. 现代浏览器原生js获取id号方法

    <div id="tests" class="a b c" style="color:#f00">123</div> ...

  4. 【从翻译mos文章】正在实施的获取job的 session id

    正在实施的获取job的 session id 参考原始: How to get the session Id of the Running Job (Doc ID 1604966.1) 申请: Ora ...

  5. 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号

    每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含着CPU的生产日期,版本号,型号等等,那么,在我们的这款友善之臂Tiny4412的板子上,我的这个CPU的ID又是多少呢?从我 ...

  6. 使用IO映射的方式获取tiny4412板子上的ID号

    在以前的文章中,有一篇 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号 在那篇文章中,具体可以参考.那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将 ...

  7. 如何获取板子上独有的ID号EXYNOS4412/Imx6ul【转】

    本文转载自:http://blog.csdn.net/u010871058/article/details/75637175 每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含 ...

  8. python获取进程id号:

    python获取进程id号: os.getpid()获取当前进程id os.getppid()获取父进程id

  9. Linux进程ID号--Linux进程的管理与调度(三)【转】

    Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一. 该数据结 ...

随机推荐

  1. Vue实现跑马灯的效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. strncpy

    char* mstrncpy(char *dest, const char *src, size_t n){ size_t i; size_t j=n-; ; i < j && ...

  3. Quartz错过任务执行时间的处理机制(Misfire处理规则 )

    调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 CronTrigger withMisfireHandlingInstr ...

  4. 【转】【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件

    [转][完全开源]百度地图Web service API C#.NET版,带地图显示控件.导航控件.POI查找控件 目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET ...

  5. [总结]给pcDuino v2编译Linux kernel

    1.版本问题 推荐选择pcdunio提供的官方的kernel. 当然可以选用www.github.com/linux-sunxi 中的kernel,不过有很多驱动都用不了包括arduino. 我尝试了 ...

  6. list.get(0)防止NPE

    package com.chuangjin.p2p; import com.chuangjin.core.utils.JsonUtils; import java.util.ArrayList; im ...

  7. mui getJSON实现jsonp跨域

    //刚开始做APP的时候,后台给的方式是jsonp,然后就百度mui框架的jsonp跨域,看了好多文章,都说可以支持,但是大部分都是直接把别人复制来的,都不知道是不是真的能支持,做好打包完的时候,下载 ...

  8. Linux---基础命令(二)

    https://www.linuxprobe.com/chapter-02.html  (Linux就要这么学) 一.基本权限命令 权限命令:chmod - rwx rwx rwx 第一位代表的是系统 ...

  9. 常见的js dom操作

    1.查找  document.getElementById('id属性值');  返回拥有指定id的第一个对象的引用  document/element.getElementsByClassName( ...

  10. gensim和jieba分词进行主题分析,文本相似度

    参考链接:https://blog.csdn.net/whzhcahzxh/article/details/17528261 demo1:结巴分词: # 构造分词库,格式如下: ''' [['楼下', ...