package org.kf.server.util;import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ServerContext;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
import org.kf.entity.*;
import org.kf.client.biz.ClientBiz;public class KfUtil {
/** 保存当前在线用户列表 */

public static List<Guest> guests = new ArrayList<Guest>();

public String getReceiver(HttpServletRequest request){
HttpSession session = request.getSession(false);
if(session == null){
System.out.println("failed");
}
System.out.println("**********2**************************");
System.out.println(session.getAttribute("usersessionid"));
return (String)session.getAttribute("usersessionid");
}
/*user注册scriptsession*/
public String regUser(String username,HttpServletRequest request){
HttpSession session = request.getSession();
User user = new User();
user.setScsession(request.getSession().getId());
user.setUsername(username);
session.setAttribute("usersessionid", user.getScsession());
/*
User user = (User)session.getAttribute("user");
ClientBiz cb = new ClientBiz();
cb.updateUser(user);
*/
this.setScriptSessionFlagForUser(user.getScsession());
System.out.println("***************1**************************");
System.out.println(user.getScsession());
return user.getScsession();
}

/*guest注册scriptsession*/
public String  regGuest(HttpServletRequest request){
Guest guest = new Guest();
guest.setScsession(request.getSession().getId());
this.setScriptSessionFlagForGuest(guest.getScsession());
System.out.println(guest.getGuestname());
guests.add(guest);
return guest.getGuestname();
}
当用户通过浏览器访问kf.jsp页面时,执行这个方法 regUser(String username,HttpServletRequest request);
并注册user,把当前的sessionid放在session里面.当用户通过浏览器访问client.jsp页面时,我想通过执行这个方法getReceiver(),通过session得到之前的sessionid可是不知道为什么,就是取不到啊
烦劳各位大侠帮忙....

解决方案 »

  1.   

    在 public String getReceiver(HttpServletRequest request)方法中,你把HttpSession session = request.getSession(false);
    改成HttpSession session = request.getSession();看可以不
      

  2.   

    将这句(String)session.getAttribute("usersessionid");
    直接写成request.getSession.getAttribute("usersessionid");
    上面那一段都不用了,再试试
      

  3.   

    看看你的SESSION中是否已经保存的有值..或者是否在哪一块已将保存在值释放了...
      

  4.   

    解译一下:
    想做一个点对点聊天的demo,用的是dwr....kf.jsp
    ]
    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@ page import="org.kf.entity.*"%><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><%
    // User user = (User)session.getAttribute("user");
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'kf.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type='text/javascript' src='/kf/dwr/interface/KfUtil.js'></script>
    <script type='text/javascript' src='/kf/dwr/engine.js'></script>
    <script type='text/javascript' src='/kf/dwr/util.js'></script>
    <script type='text/javascript' src='/kf/chat/kf.js'></script>
      </head>
      
      <body>
    <div class="z_all" align="center"><br>&nbsp;  

    <div style="float: left;">
    在线Guest:
    <ul id="guests">

    </ul>
    </div>
    <div class="t1" style="float: right;">
    <input type="text" id="username">
    <input type="button" id="register" value="注册" onclick="register()"/>
    <textarea rows="10" cols="70" id="kfmesup"></textarea>
    我要对
    <select id="receiver">

    </select>
    说:<br>
    <textarea rows="6" cols="50" id="mesdown"></textarea>
    <input type="button" value="send" id="send" onclick="sendMes();">
    </div>
    </div>
      </body>
    </html>
      

  5.   

    client.jsp<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>My JSP 'client.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="styles.css">
    <script type='text/javascript' src='/kf/dwr/interface/KfUtil.js'></script>
    <script type='text/javascript' src='/kf/dwr/engine.js'></script>
    <script type='text/javascript' src='/kf/dwr/util.js'></script>
    <script type='text/javascript' src='client.js'></script>
    <script type="text/javascript" src="kf.js"></script>
    </head> <body>
    <div class="z_all" align="center"> 
    <input type="hidden" id="guest">
    <input type="hidden" id="usersec">
    <textarea rows="10" cols="70" id="mesup"></textarea>

    <div class="t1">
    <textarea rows="6" cols="50" id="mesdown"></textarea>
    <input type="button" value="send" id="send" onclick="sendMes();">
    </div>

    </div>
    </body>
    </html>
      

  6.   

    kf.js
    function init() {
    dwr.engine.setActiveReverseAjax(true);
    KfUtil.updateUsersList(); 
    }function register(){
    var un =$('username').value;
    KfUtil.regUser(un,function(data){
    $('usersec') = data;//alert(data);
    });
    }function sendMes(){
    var senderName = dwr.util.getValue('selfname');
    var receiver = dwr.util.getValue('receiver');
    var msg = dwr.util.getValue('message');
    mychatrecord(senderName,msg);
    KfUtil.userSendMes(senderName,receiver,msg);
    }function mychatrecord(sender,msg){
    var span = document.createElement('span');
    var sd = document.createTextNode(sender+" "+mydate());
    span.appendChild(sd);
    var li = document.createElement('li');

    var ospan = document.createElement('span');
    var osd = document.createTextNode(msg);
    ospan.appendChild(osd);
    var oli = document.createElement('li');

    li.appendChild(span);
    oli.appendChild(ospan);

    $('kfmesup').appendChild(li);
    $('kfmesup').appendChild(oli);
    }function chatrecord(sender,receiver,msg){
    alert('----------------');
    var span = document.createElement('span');
    var sd = document.createTextNode(sender+" "+mydate());
    span.appendChild(sd);
    var li = document.createElement('li');

    var ospan = document.createElement('span');
    var osd = document.createTextNode(msg);
    ospan.appendChild(osd);
    var oli = document.createElement('li');

    li.appendChild(span);
    oli.appendChild(ospan);

    $('mesup').appendChild(li);
    $('mesup').appendChild(oli);
    }function mydate(){
    var d = new Date()
    var hh = '';
    var mi = '';
    var se = '';
    if(d.getHours()<10){
    hh = '0'+d.getHours();
    }else{
    hh = d.getHours();
    }

    if(d.getMinutes()<10){
    mi = '0'+d.getMinutes();
    }else{
    mi = d.getMinutes();
    }

    if(d.getSeconds()<10){
    se = '0'+d.getSeconds();
    }else{
    se = d.getSeconds();
    }

    return hh+":"+mi+":"+se;
    }
    window.onload = init;
    client.js
    function init() {
    getReceiver();
    KfUtil.regGuest(function(data) {
    if (data != null && data.length > 0) {
    alert(data);
    $('guest').value = data; 
    }
    });

    }function sendMes(){
    var sender = dwr.util.getValue('guest');
    var receiver = dwr.util.getValue('usersec');
    var msg = dwr.util.getValue('mesdown');
    alert('sender='+sender+' receiver='+receiver+' msg='+msg);
    mychatrecord(sender,msg);
    KfUtil.guestSendMes(sender,receiver,msg);
    }function mychatrecord(sender,msg){
    var span = document.createElement('span');
    var sd = document.createTextNode(sender+" "+mydate());
    span.appendChild(sd);
    var li = document.createElement('li');

    var ospan = document.createElement('span');
    var osd = document.createTextNode(msg);
    ospan.appendChild(osd);
    var oli = document.createElement('li');

    li.appendChild(span);
    oli.appendChild(ospan);

    $('mesup').appendChild(li);
    $('mesup').appendChild(oli);
    }function chatrecord(sender,receiver,msg){
    var span = document.createElement('span');
    var sd = document.createTextNode(sender+" "+mydate());
    span.appendChild(sd);
    var li = document.createElement('li');

    var ospan = document.createElement('span');
    var osd = document.createTextNode(msg);
    ospan.appendChild(osd);
    var oli = document.createElement('li');

    li.appendChild(span);
    oli.appendChild(ospan);

    $('mesup').appendChild(li);
    $('mesup').appendChild(oli);
    }function mydate(){
    var d = new Date()
    var hh = '';
    var mi = '';
    var se = '';
    if(d.getHours()<10){
    hh = '0'+d.getHours();
    }else{
    hh = d.getHours();
    }

    if(d.getMinutes()<10){
    mi = '0'+d.getMinutes();
    }else{
    mi = d.getMinutes();
    }

    if(d.getSeconds()<10){
    se = '0'+d.getSeconds();
    }else{
    se = d.getSeconds();
    }

    return hh+":"+mi+":"+se;
    }function getReceiver(){
    KfUtil.getReceiver(function(data) {
    if (data != null && data.length > 0) {
    $('usersec').value = data; 
    }
    });
    }
    window.onload = init();
      

  7.   

    你用的是DWR吗?dwr在提交的过程中,获取session的方法是不一样的!
    在你的java代码中,获取session用这样的方式
    WebContext ctx = WebContextFactory.get();
    HttpSession session = ctx.getSession() ;