首先,具体结构是这样的,定一了一个BaseAction,里面定义了一个sessoin
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.session = ActionContext.getContext().getSession();
}
然后一个AdminAction extends BaseAction
现在要用DWR进行一部登陆,登录时向Session中set一些信息,应该如何做?还有个问题就是页面刷新时,我进行的操作都是用js做的 页面又恢复到了最开始的状态,我想在页面load的时候应该加一个从session中读的操作。
又应该如何做。求指导!谢谢各位.因为初学乍练还请各位讲的详细一点。不胜感激。
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.session = ActionContext.getContext().getSession();
}
然后一个AdminAction extends BaseAction
现在要用DWR进行一部登陆,登录时向Session中set一些信息,应该如何做?还有个问题就是页面刷新时,我进行的操作都是用js做的 页面又恢复到了最开始的状态,我想在页面load的时候应该加一个从session中读的操作。
又应该如何做。求指导!谢谢各位.因为初学乍练还请各位讲的详细一点。不胜感激。
解决方案 »
- 连接数据库
- java,tomcat,axis2写webservice,实现数据库间数据传输,求指导
- axis1.4客户端调用jdk6 webservice 的问题
- 在ubuntu下一个图片的绝对路径
- Apache Tomcat 7.0正式发布 支持Servlet 3.0
- ssh空指针错误,求救!
- WebSphere中如何配置struts?
- jbpm4.4 发布流程报错,求大神
- 问一下会话BEAN实现类中的setSessionContext方法的作用,希望大家进来看一下,谢谢
- Ejb-ql查询问题
- java tomcat contextInitialized启动多次
- android让按键在弹起时有效
WebContext web= WebContextFactory.get();
//得到servlet中的request/response对象
HttpServletRequest request=web.getHttpServletRequest();
HttpServletResponse response=web.getHttpServletResponse();
//在此可提取request中相关请求参数...
/取得session对象
HttpSession session=request.getSession();
比如前台用dwr调用java函数getA(id),只需这样写dwrBean.getA(id,function(data){//回调函数});
后台只需要声明一个HttpSession对象,DWR引擎会负责将此处的session变量初始化成WEB程序中的session ,然后在方法中直接使用即可:public String getA(String id,HttpSession session){
//从session中获得user对象
User user=(User)session.getAtrribute("user");
return user.getName();
}
Struts2中的Session是一个Map 里面的元素是拷贝的HttpSession里的信息。你对这个Map修改之后,里面的信息就又被保存到了HttpSession中我不知道你为什么非要一个Struts2的Session你的DWR类里写的方法这样写public 返回类型 方法名(HttpServletRequest req, 参数1, 参数2,.....){ HttpSession session = req.getSession();
}这样不行吗?我之前做的都可以啊
action写在dwr里?你是要干什么?不明白你的意思。这样吧,你先说说,你为什么要获取session,你用它都干什么这样我们再说,你是否一定要用Struts 2里的sessionHttpSession不是某个框架提供的,框架只能是对它进行封装
用户对象类型 user = (用户对象类型)session.getAttribute("你的用户对象放在session里的key"); if(user == null){
return 还没登录的信息;
}else{
return 已经登录的信息和用户信息;
}}前端的JS里你这样调用
DWR类名.方法名(参数1,参数2,......, function(返回信息){
在这里处理你的返回信息。
});
谢谢各位了,我终于弄懂了...原来对Struts2 Session的原理不清楚,所以一直想得struts2的session。
直接获得HttpSession已经明白了,谢谢各位。还有个小问题就是从session中得到的是Object类型,如何转换成JS的引用类型呢,我这里是Administrator。
DwrSession.getSession('online', function(data){
if(data==null){
alert('请登录');
}else{
var email = data.admin_email;
var name= data.admin_name;
var admin = {
admin_email:email,
admin_name:name
};
admin=data;
$('login').style.display='none';
$('info').style.display="block";
$('load').style.display="none";
$('menu').style.display="block";
$('info-email').innerHTML='用户:'+admin.admin_email+' 姓名:'+ admin.admin_name;
}
});我这里写的在info-email里面显示出来的都是undefined
DwrSession.getSession('online', function(data){
if(data==null){
alert('请登录');
}else{
var admin = {
admin_email:data.admin_email,
admin_name:data.admin_name
};
$('login').style.display='none';
$('info').style.display="block";
$('load').style.display="none";
$('menu').style.display="block";
$('info-email').innerHTML='用户:'+admin.admin_email+' 姓名:'+ admin.admin_name;
}
});
DWR可以进行类型转换的,之前进行异步查询的时候已经转换过了
这次不知道怎么回事,就单纯的JS而讲,有把Object转换成引用类型的方法吗。
DWR进行类型转换的前提是,你的对象不够复杂,比如Map<String , List<Map<String, List<Map<String, List<Object>>>>>>你怎么转?