• 通过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()方法进行转换!!!!

  • 相关阅读:
    C++11并发——多线程std::thread (一)
    css属性操作
    mustache使用
    layer常用方法代码
    layer使用
    java后台获取和js拼接展示信息
    生成二维码
    循环体中去除一部分特定的数据
    eclipse工具maven项目打包文件不是最新修改的
    sql server数据库备份单个表的结构和数据生成脚本
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/10526106.html
Copyright © 2020-2023  润新知