由于各种原因,一直是用的dwr1.0的版本。
一开始,我想在java类中创建一个session传到jsp中:
[code="java"]
public boolean checkUser(String operatorId, String password,
String groupId,HttpSession session) throws Exception {
boolean bValid = true;
try {
........//DAO
} catch (Exception e) {
........
}
session = ExecutionContext.get().getSession();
session.setAttribute("user", "daveli");
return bValid;
}
[/code]
[code="java"]
js:
function handleCheck()
{
User.checkAuthority(opId,psd,sGroupId,callback);
}
jsp:
<%=(String)session.getAttribute("user")%> //[color=red]得到的是空(null),不论怎么刷新[/color]
[/code]
这样不行,于是我换了一种方法,在页面中创建一个session,然后在java类中改变session的值:
[code="java"]
public boolean checkUser(String operatorId, String password,
String groupId,HttpSession session) throws Exception {
boolean bValid = true;
try {
........//DAO
} catch (Exception e) {
........
}
session = ExecutionContext.get().getSession();
String username = (String)session.getAttribute("user");
System.out.println(UserName); //打印出来为空,说明session没有传过来。
session.removeAttribute("user");
session.setAttribute("user", "java sun");
return bValid;
}
[/code]
[code="java"]
js:
function handleCheck()
{
User.checkAuthority(opId,psd,sGroupId,callback);
}
jsp:
<% session.setAttribute("user", "hello");%>
<%=(String)session.getAttribute("user")%> //[color=red]得到的永远是“hello”,不论怎么刷新,说明java类中的设置没传过来[/color]
请问:如何用DWR创建和调用session?
[/code]
[b]问题补充:[/b]
谢谢jones ,你的回答。
既然jsp页面中饿代码已经先于客户端执行的javascript执行,所以第二种方法中的java类中的
System.out.println(UserName);不可能打印出来的空值。我点到其他的jsp页面的话,也应该得到我在java类中设置的session值吧。
[b]问题补充:[/b]
谢谢,我发现问题了。我打印出jsp和java类的session_id。加不加
session = ExecutionContext.get().getSession();
都是不同的。
该怎么把jsp页面的这个session发送到java类呢?如何把java类的session传给jsp中呢?
[b]问题补充:[/b]
dwr和session通讯的方式:
1. java类中把session作为参数,如:
public void makeChart(String chartType,HttpSession session)
2.页面中调用如下:
TestJFreeChartDwr.makeChart(type,show);
无需传递第一步中的session参数,dwr会自动填充到session里
我也是这样做的啊。可是还是传不到java类中?
是不是dwr1.0不支持session呢?
[b]问题补充:[/b]
晓得原因了。
我做验证的时候是用的弹出小页面,所以又创建了一个新的session,当登录页面关掉后,session也就自动关掉了。所以原页面的session还是为null。
该怎么处理这个问题?
[b]问题补充:[/b]
我是这么做的:
A页面:要登录的页面,页面加载的时候加载js:
js:
function init() {
//authority check
var boolIsSupervisor = window.showModalDialog( "check_user.jsp", "", "dialogHeight:10; dialogWidth:22; status:no" );
if ( String( boolIsSupervisor ) == "undefined" || boolIsSupervisor == false ) {
alert ( "Supervisor authentication failed." );
window.location.href = "/mrs/mrsRightPage.do";
}
}
check_user.jsp是登录页面,要求输入用户名,密码,点提交调用js:
function handleCheck()
{
User.check(name,password,getAuth);
}
function getAuth(pass) {
window.returnValue=true;
window.close();
}
java类中:
public boolean checkUser(String name, String password,
HttpSession session){
boolean bValid = true;
//业务处理
session.setAttribute("user", "java sun");
return bValid;
}
我发现check_user.jsp中的session和也登录的页面不是一个session。这么才能让他们共用一个session???
谢谢