session.getAttribute得不到值啊,奇怪,很奇怪啊

时间:2021-03-29 15:01:49

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。。。

可是不知道为什么,就是取不到啊。。。


烦劳各位大侠帮忙....

11 个解决方案

#1


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

#2


个性签名:当我是一个乞丐...

#3


引用 1 楼 qiheia 的回复:
在 public String getReceiver(HttpServletRequest request)方法中,你把HttpSession session = request.getSession(false); 
改成HttpSession session = request.getSession();看可以不 


不行的,之前我都试过了。。。
谢谢你的回答..

#4


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

#5


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

#6


引用 4 楼 zjx2388 的回复:
将这句(String)session.getAttribute("usersessionid"); 
直接写成request.getSession.getAttribute("usersessionid"); 
上面那一段都不用了,再试试

不行,还有招没...

#7


程序看上去没有问题。可以把你的页面跳转代码发出来看看吗?

#8


解译一下:
想做一个点对点聊天的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>

#9


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>

#10


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();

#11


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

#1


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

#2


个性签名:当我是一个乞丐...

#3


引用 1 楼 qiheia 的回复:
在 public String getReceiver(HttpServletRequest request)方法中,你把HttpSession session = request.getSession(false); 
改成HttpSession session = request.getSession();看可以不 


不行的,之前我都试过了。。。
谢谢你的回答..

#4


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

#5


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

#6


引用 4 楼 zjx2388 的回复:
将这句(String)session.getAttribute("usersessionid"); 
直接写成request.getSession.getAttribute("usersessionid"); 
上面那一段都不用了,再试试

不行,还有招没...

#7


程序看上去没有问题。可以把你的页面跳转代码发出来看看吗?

#8


解译一下:
想做一个点对点聊天的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>

#9


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>

#10


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();

#11


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