• 同一浏览器中同一JavaWeb程序不共享session方法


    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/b2084005/article/details/30222735
    1、要求

       在使用struts1开发JavaWeb项目中,要求超级管理员登录进入之后,展示普通用户列表,在普通用户列表中添加管理用户按钮,点击后,在浏览器中另外弹出一个标签页,而且该标签页是选中的普通用户登录后的界面。

    2、产生问题

    a、点击普通用户登录后,session中的用户信息已经变为了该用户的信息了,如果再次刷新超级管理员登录的界面,此时,界面就变为选中的普通用户登录的界面了。

    b、同一个系统,在同一浏览器中的session的ID是相同的,此sessionID是服务器创建session产生的,无法在客户端修改sessionid,若想修改sessionid,得从服务器端修改(没试过)。

    3、解决办法

       a、生成一个不重复的值,我取名为sid

        例、Random random = new Random();  

    StringBuffer sid = new StringBuffer();  

    sid = sid.append(System.currentTimeMillis()); //取系统时间  

    //  加上10为0-9随机数确保sid不重复  

    for (int i = 0; i < 10; i++) {  

        sid = sid.append(random.nextInt(10));  

    }

       b、把需要的用户相关的字段和sessionid一起写到一个Map中

    例、Map sessionMap = new HashMap();  

    sessionMap.put("username", username); 

    sessionMap.put("userpwd", userpwd);

    sessionMap.put("sessionid", session.getId());

    sessionMap.put("usertype", userbean.getUsertype());

       c、把sid和map关联起来添加到session中

    例、session.setAttribute(sid.toString(), sessionMap); 

       d、把sid传递给jsp页面(需通过sid获取用户信息)

    例、ActionRedirect redirect = new ActionRedirect(actionMapping

    .findForward("index"));

    redirect.addParameter("sid",sid.toString());  request.getSession().setAttribute("userbean",userbean);

    return redirect;

    e、jsp页面通过sid获取用户信息

    例、String sid = request.getParameter("sid");  

    Map utitle = new HashMap();

    utitle = (Map)request.getSession().getAttribute(sid); 

    String username = (String)utitle.get("username");

    String usertype = (String)utitle.get("usertype");

    String uid = (String)utitle.get("uid");

    System.out.println(uid+"=====uid===~~~====");

    f、把获取的值传递给需要的页面

      例、 <iframe scrolling="auto" frameborder="0" height="100%"  width="100%"src="<%=appContext  %>/main/main.jsp?usertype=<%=usertype %>&uid=<%=uid %>"    name="mainFrame"></iframe>

    g、jsp页面获取需要的值

    例、String  usertype1 = "";

    String  uid = "";

    usertype1 = (String)request.getParameter("usertype");

    uid = (String)request.getParameter("uid");

    参考文章:http://vearn.iteye.com/blog/376407 、

    http://www.blogjava.net/DreamAngel/archive/2012/06/08/380306.html和

    http://aazham.iteye.com/blog/1184220
    ---------------------
    作者:b2084005
    来源:CSDN
    原文:https://blog.csdn.net/b2084005/article/details/30222735
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    angular4升级angular5问题记录之this.location.back()
    angular4升级angular5问题记录之No NgModule metadata found for 'AppModule'
    Angular4图片上传预览路径不安全问题
    Angular4.0引入laydate.js日期插件方法
    Angular4.0用命令行创建组件服务出错
    IE10以下的img标签问题
    关于for循环删除数组内容出现的问题
    关于onmouseover和onmouseout的bug
    纯lua实现Base64加密与解密
    SciTE如何修改背景色
  • 原文地址:https://www.cnblogs.com/harbin1900/p/11220378.html
Copyright © 2020-2023  润新知