DWR如何获取Struts2中的Session

April_Java 2011-04-26 05:12:24
首先,具体结构是这样的,定一了一个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中读的操作。
又应该如何做。求指导!谢谢各位.

因为初学乍练还请各位讲的详细一点。不胜感激。
...全文
590 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
April_Java 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 clarck_913 的回复:]
引用 17 楼 april_java 的回复:


DWR可以进行类型转换的,之前进行异步查询的时候已经转换过了
这次不知道怎么回事,就单纯的JS而讲,有把Object转换成引用类型的方法吗。


DWR进行类型转换的前提是,你的对象不够复杂,比如Map<String , List<Map<String, List<Map<String, List<Object>>>>>>

你……
[/Quote]
............我的没那么复杂! 晕了..- -#
clarck_913 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 april_java 的回复:]


DWR可以进行类型转换的,之前进行异步查询的时候已经转换过了
这次不知道怎么回事,就单纯的JS而讲,有把Object转换成引用类型的方法吗。
[/Quote]

DWR进行类型转换的前提是,你的对象不够复杂,比如Map<String , List<Map<String, List<Map<String, List<Object>>>>>>

你怎么转?
April_Java 2011-05-06
  • 打赏
  • 举报
回复
以解决,结贴散分,分不多,谢谢各位啦!
UPC_思念 2011-05-06
  • 打赏
  • 举报
回复
检查dwr配置类型转换是否正确
April_Java 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 clarck_913 的回复:]
容器里的Java对象和浏览器里的JS对象之间是不能直接传递的

就像Form里的信息,最终是字符串方式传到应用服务器上然后再进行转换的

建议你使用某特定格式的字符串进行前后台的数据传递

比如, JSON或者XML
[/Quote]

DWR可以进行类型转换的,之前进行异步查询的时候已经转换过了
这次不知道怎么回事,就单纯的JS而讲,有把Object转换成引用类型的方法吗。
clarck_913 2011-05-06
  • 打赏
  • 举报
回复
容器里的Java对象和浏览器里的JS对象之间是不能直接传递的

就像Form里的信息,最终是字符串方式传到应用服务器上然后再进行转换的

建议你使用某特定格式的字符串进行前后台的数据传递

比如, JSON或者XML

April_Java 2011-05-06
  • 打赏
  • 举报
回复
上面的代码有些不对, 而且我在dwr.xml文件里也配置了Administrator的Converter了。仍为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;
}
});
April_Java 2011-05-06
  • 打赏
  • 举报
回复

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
April_Java 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 clarck_913 的回复:]
引用 9 楼 april_java 的回复:

不行啊,我用的是Struts2的session啊 Struts2的session是ActionContext里面的那个,和这个不一致啊,我把action写在dwr。xml配置文件里,也是不行,alert的时候打出来的都是undefined


Struts2中的Session是一个Map 里面的元素是拷贝的HttpSession里的信息。
……
[/Quote]

谢谢各位了,我终于弄懂了...原来对Struts2 Session的原理不清楚,所以一直想得struts2的session。
直接获得HttpSession已经明白了,谢谢各位。

还有个小问题就是从session中得到的是Object类型,如何转换成JS的引用类型呢,我这里是Administrator。
clarck_913 2011-04-30
  • 打赏
  • 举报
回复
你不是想在页面加载的时候先用Ajax读取一下后台Session里是否有用户信息吗?

这么点事,为什么你非必须要Struts2封装的session呢?

DWR方法里这样写:

public 返回类型 方法名(HttpServletRequest req, 参数1, 参数2,.....){

HttpSession session = req.getSession();
用户对象类型 user = (用户对象类型)session.getAttribute("你的用户对象放在session里的key");

if(user == null){
return 还没登录的信息;
}else{
return 已经登录的信息和用户信息;
}

}



前端的JS里你这样调用


DWR类名.方法名(参数1,参数2,......, function(返回信息){
在这里处理你的返回信息。
});



April_Java 2011-04-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 clarck_913 的回复:]
恩,6楼说的对

你的后台DWR方法,在声明的时候直接就把ServletAPI中的对象写在参数列表里

JS调用的时候,你只传入非ServletAPI的参数和回调函数

DWR会帮你做其他工作的
[/Quote]
不行啊,我用的是Struts2的session啊 Struts2的session是ActionContext里面的那个,和这个不一致啊,我把action写在dwr。xml配置文件里,也是不行,alert的时候打出来的都是undefined
clarck_913 2011-04-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 april_java 的回复:]

不行啊,我用的是Struts2的session啊 Struts2的session是ActionContext里面的那个,和这个不一致啊,我把action写在dwr。xml配置文件里,也是不行,alert的时候打出来的都是undefined
[/Quote]

Struts2中的Session是一个Map 里面的元素是拷贝的HttpSession里的信息。

你对这个Map修改之后,里面的信息就又被保存到了HttpSession中

我不知道你为什么非要一个Struts2的Session

你的DWR类里写的方法这样写

public 返回类型 方法名(HttpServletRequest req, 参数1, 参数2,.....){

HttpSession session = req.getSession();
}

这样不行吗?我之前做的都可以啊


action写在dwr里?你是要干什么?不明白你的意思。

这样吧,你先说说,你为什么要获取session,你用它都干什么

这样我们再说,你是否一定要用Struts 2里的session

HttpSession不是某个框架提供的,框架只能是对它进行封装
romanitc 2011-04-30
  • 打赏
  • 举报
回复
直接用dwr调用你后台的方法就OK了,不用session是完全可以的。不要太复杂了。程序还是简单的好!
clarck_913 2011-04-27
  • 打赏
  • 举报
回复
恩,6楼说的对

你的后台DWR方法,在声明的时候直接就把ServletAPI中的对象写在参数列表里

JS调用的时候,你只传入非ServletAPI的参数和回调函数

DWR会帮你做其他工作的
UPC_思念 2011-04-26
  • 打赏
  • 举报
回复
更多信息请百度搜索"DWR操作servlet API"
UPC_思念 2011-04-26
  • 打赏
  • 举报
回复
既然都用了DWR了,后台处理类就没必要用ACTION来搞,普通的类即可,DWR可以在普通类中访问session对象。
比如前台用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();
}
LY0223 2011-04-26
  • 打赏
  • 举报
回复
如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象
redlotus_lyn 2011-04-26
  • 打赏
  • 举报
回复
//取得webapp上下文对象
WebContext web= WebContextFactory.get();
//得到servlet中的request/response对象
HttpServletRequest request=web.getHttpServletRequest();
HttpServletResponse response=web.getHttpServletResponse();
//在此可提取request中相关请求参数...
/取得session对象
HttpSession session=request.getSession();
April_Java 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 viszl 的回复:]
HttpSession session = org.directwebremoting.WebContextFactory.get().getSession();
[/Quote]
这样定义的session和Struts2 中的session是相同的吗?
April_Java 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 viszl 的回复:]
HttpSession session = org.directwebremoting.WebContextFactory.get().getSession();
[/Quote]
尝试过了,取出的值总是undefined的,是什么原因呢。
加载更多回复(1)
软件说明:
第1章. DWR入门 8
1.1 简介 8
1.2 第一个DWR程序:Hello World 9
1.2.1 将DWR放入你的工程 9
1.2.2 编辑配置文件 9
1.2.3 编写service 10
1.2.4 测试DWR 10
1.2.5 编写一个jsp 11
1.3 本章总结 12

第2章. web.xml配置 13
2.1 主要配置 13
2.2 常用参数列表 14
2.2.1 安全参数 14
2.2.2 Ajax服务器加载时保护参数 14
2.2.3 其他参数 15
2.3 日志配置 16
2.4 多个dwr.xml配置和J2EE角色定义 16
2.5 插件配置 18
2.6 测试模式配置 19

第3章. dwr.xml配置 20
3.1 纵览 20
3.2 标签 20
3.3 标签 21
3.3.1 Creator 21
3.3.2 Converter 25
3.4 标签 30

第4章. 整合 32
4.1 DWR与Servlet 32
4.1.1 使用webContext的方法: 32
4.1.2 方法选择 32
4.2 DWR与Spring 34
4.2.1 让DWR和Spring一起工作的检查列表 34
4.2.2 Spring Creator 34
4.2.3 找到Spring配置文件 34
4.2.4 使用Spring配置DWR 35
4.3 DWR与JSF 36
4.3.1 JSF Creator 36
4.3.2 Servlet Filter 36
4.4 DWR与Struts 37
4.4.1 Struts creator 37
4.4.2 开始顺序 37
4.5 DWR与Weblogic或PageFlow 38
4.6 DWR与Hibernate 39
4.6.1 让DWR和Hibernate一起工作的检查列表 39
4.6.2 HibernateBeanConverter 39
4.6.3 Session管理 39
4.7 DWR与WebWork 40
4.7.1 配置dwr.xml 40
4.7.2 在JSP导入脚本 40
4.7.3 高级 41
4.8 DWR与Acegi 42
4.8.1 问题提出 42
4.8.2 解决方案 42

第5章. DWR的JavaScript简介 44
5.1 简单的回调函数 44
5.2 调用元数据对象 45
5.3 查找回调函数 45
5.4 创造一个与Java对象匹配的Javascript对象 46

第6章. engine.js 功能 47
6.1 使用选项 47
6.2 选项索引 48
6.2.1 处理器(Handler) 48
6.2.2 调用处理器(Call Handler) 48
6.2.3 Hooks (一个batch可以注册多个hook) 49
6.2.4 全局选项(在单次调用或者批量调用不可用) 49
6.2.5 废弃的选项 49
6.2.6 未来版本的选项 49
6.3 选项说明 50
6.3.1 批量调用 50
6.3.2 顺序调用 50
6.3.3 错误警告和超时 50
6.3.4 远程调 Hooks 51
6.3.5 远程调用选项 51

第7章. util.js 功能 54
7.1 $() 54
7.2 addOptions and removeAllOptions 54
7.3 addRows and removeAllRows 55
7.4 getText 56
7.5 getValue 56
7.6 getValues 57
7.7 onReturn 57
7.8 selectRange 57
7.9 setValue 58
7.10 setValues 58
7.11 toDescriptiveString 58
7.12 useLoadingMessage 58
7.13 Submission box 61

第8章. DWR进阶 63
8.1 DWR Annotations 63
8.1.1 初始配置 63
8.1.2 远程访问类 63
8.1.3 对象转换 64
8.2 错误和异常处理 64
8.2.1 错误处理 64
8.2.2 异常 65
8.2.3 找出更多的信息 65
8.3 传递额外的数据到callback函数 66
8.4 从其他的URL读取数据 67
8.5 安全 68

第9章. 范例精讲 71
9.1 购物车 71
9.1.1 介绍 71
9.1.2 实现目录 72
9.1.3 测试部署 74
9.1.4 调用远程对象 75
9.1.5 实现购物车 77
9.1.6 调用远程的 Cart 方法 79
9.1.7 演示结果 81
9.1.8 总结 81

第10章. 附录 83
10.1 常见问题 83
10.1.1 TransformerFactoryConfigurationError 83
10.1.2 XML解析错误 83
10.1.3 使用weblogic的类路径问题 83
10.1.4 没有cookies的情况下用DWR 84
10.2 JavaScript高级应用 85
10.2.1 用变量操纵函数 85
10.2.2 高阶函数 86
10.2.3 动态类型 87
10.2.4 灵活的对象模型 89
10.2.5 本节总结 91
低清版51M 大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 技术篇 第1章 大型门户网站架构分析 3 1.1 大型门户网站与小型企业网站的区别 3 1.2 高性能、高负载门户网站架构剖析 9 1.2.1 服务器操作系统的选择 10 1.2.2 dns服务器bind 16 1.2.3 cache服务器squid 18 1.2.4 带负载均衡的http服务器apache 19 1.2.5 支持集群功能的web服务器tomcat 21 1.2.6 开源数据库服务器之骄子mysql 23 1.2.7 功能强大的flv流媒体服务器red5 24 1.3 门户网站开发指导思想 26 1.4 ssh 2组合框架—门户网站开发之首选 28 1.4.1 mvc混血宠儿struts 2 28 1.4.2 幕后的财政部长spring 2.5 30 1.4.3 orm间件香馍馍hibernate 3.2 31 1.5 小结 32 第2章 mvc混血宠儿struts 2 33 2.1 初识mvc新秀struts 2 33 2.1.1 mvc概述 33 .2.1.2 struts 2的mvc实现 35 2.1.3 struts 2的基本组成 36 2.1.4 struts 2的常用类介绍 38 2.1.5 struts 2的业务控制器action实现 39 2.1.6 struts 2的处理结果result 45 2.1.7 功能强大的表达式语言ognl 47 2.1.8 struts 2的运行流程分析—helloworld 48 2.1.9 struts 2的异常处理 52 2.2 struts 2配置精要 54 2.2.1 web.xmlstruts 2的配置实现 54 2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2集成fckeditor 80 2.3.4 struts 2集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的文本地化 85 2.4.2 struts 2应用的国际化 87 2.4.3 struts 2国际化语言的动态切换 89 2.5 struts 2的校验框架 90 2.5.1 在action实现手动校验 90 2.5.2 调用校验框架进行自动校验 91 2.5.3 自定义国际化struts 2校验错误消息 92 2.5.4 struts 2的自带校验器 92 2.6 struts 2的拦截器 94 2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100 第3章 struts 2标签库详解与ajax技术应用 103 3.1 struts 2主题与模板 103 3.2 struts 2控制标签详解 105 3.2.1 if/elseif/else标签详解 105 3.2.2 iterator标签详解 106 3.2.3 append标签详解 108 3.2.4 generator标签详解 110 3.2.5 merge标签详解 112 3.2.6 subset标签详解 113 3.2.7 sort标签详解 115 3.3 struts 2数据标签详解 116 3.3.1 action标签详解 116 3.3.2 bean标签详解 118 3.3.3 date标签详解 120 3.3.4 debug标签详解 121 3.3.5 i18n标签详解 122 3.3.6 include标签详解 123 3.3.7 param标签详解 126 3.3.8 push标签详解 127 3.3.9 set标签详解 128 3.3.10 text标签详解 129 3.3.11 url标签详解 130 3.3.12 property标签详解 132 3.4 struts 2表单标签详解 134
项目使用的技术: 1、前端:jsp、css、javascript、jQuery(js框架)、jquery.form.js、HTML富文本编辑器、        My97时间控件(添加员工)2、后台:Struts2、动态代理、Mybatis框架、log4J日志框架、jstl 、jstl自定义分页标签、代码机器人、Dwr、POI(实现Excel文件的导入导出)等3、数据库:Mysql4、服务器:Tomcat项目涉及的功能: 1、项目以及数据库搭建2、用户异步登录、退出3、拦截器功能实现以及整合动态代理4、公告模块的增加、修改、删除、查询以及预览功能实现、文件异步上传5、文档模块的增加、修改、删除、查询以及文档的上传下载6、员工信息的增加、修改、删除、查询以及员工头像异步上传、员工信息导出至Excel文件7、自定义分页标签实现(24种样式随意切换)8、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧