DWR访问Http Session
有时为了能在JavaScript访问Session中的值,在JavaScript中根据 session中的值做相应的动作,如根据Session中的值选中相应的 radio,checkbox,select或其它操作等
DWR已经提供了访问Session中的方法
主要用到import org.directwebremoting.WebContextFactory;
通过其来访问 HttpSession
例 根据Session中的值选中相应的checkbox
1. 实体类 用户中有属性:
private Set<AccountItemType> outtypes = new HashSet<AccountItemType>();
AccountItemType为另一实体类
含有以下属性:
private int id;
/**
* 账目项目所属的类别 0表示收入 1表示支出
*/
private int itemType;
/**
* 0表示公共项目 1表示会员私有项目
*/
private int isMember;
/**
* 项目名称
*/
private String typename; ------对应页面中的一组checkBOX
2. 用户登录后将用户信息 保存在Session中key为”MEMBER”;
3. 通过DWR获取Session中的用户,并选中 用户属性outtypes的属性 typename对应的checkbox
3.1先写一个JAVA类获取Session中的member,
import javax.servlet.http.HttpSession;
import mybook.entity.Member;
import org.directwebremoting.WebContextFactory;
public class DwrTest {
public Member testSession(){
HttpSession session = WebContextFactory.get().getSession();
Member member =(Member)session.getAttribute("MEMBER");
return member;
}
2.在DWR中配置相应的类 相关的类都要配置如 DwrTest,Member,AccountItemType,其中Member,AccountItemType的属性可以不用全部配置,只要配置需要在 DWR callback中需要访问的属性即可
<allow>
<create javascript="dwrsession" creator="new">
<param name="class" value="mybook.test.DwrTest" />
</create>
<convert match="mybook.entity.Member" converter="bean">
<param name="include" value="username,password,gender,outtypes" />
</convert>
<convert match="mybook.entity.AccountItemType" converter="bean">
<param name="include" value="typename" />
</convert>
</allow>
4. 在web.xml中配置dwr
<!-- 配置dwr 不同版本对应的servlet-class可能会有不同-->
<servlet>
<servlet-name>dwr-servlet</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-servlet</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
5. 访问工程目录下的dwr目录 获取dwr产生的JavaScript
如 http://localhost:8080/abc/dwr;abc为工程名
并将其添加至 jsp页面中
6. 在JSP页面中通DWR提供的JS得到 DwrTest 类中相应方法返回的值并做相应操作
<!-- 以下三个JS文件为DWR提供,第一个为dwr根据配置文件生成,后两个为dwr提供的工具JS -->
<script type='text/javascript' src='/accountbook/dwr/interface/dwrsession.js'></script>
<script type='text/javascript' src='/accountbook/dwr/engine.js'></script>
<script type='text/javascript' src='/accountbook/dwr/util.js'></script>
<script type="text/javascript">
function test(){
dwrsession.testSession(callBack);
}
/****==
dwr 获取Session中的值
member为Dwr和JAVA程序交互获得的 用户登录后存在HttpSession中的 会员对象,
username 为member 的String属性, outtypes为member的Set<AccountItemType>集合在dwr中
接收为String[],typename为 AccountItem的String属性
在DWR配置时需要 配置 交互的JAVA类,Member,AccountItemType总之要用到的类都要配置;
*/
function callBack(member){
/*window.alert(member.username);
window.alert(member.outtypes.length); //打印集合的长度
window.alert(member.outtypes[0].typename);
window.alert(member.outtypes[1].typename);
window.alert(member.outtypes[2].typename);*/
//便利member中的outtypes
for( var i = 0; i < member.outtypes.length;i++ ){
//window.alert("====="+member.outtypes[i].typename+"=====");
var cid=member.outtypes[i].typename;
//window.alert(cid+"-----------");
//根据typename的值得到页面中相应的checkbox对象
var cBox=document.getElementById(cid);
//window.alert(cBox.value);
选中相应的对像
cBox.checked=true;
}
}
/*
function init(){
var cBox1 = document.getElementById("工作");
//window.alert(cBox1.value+"-----------");
if(cBox1.value=="工作"){
cBox1.checked=true;
}
} */
</script>
</head>
<body onload="test()">
<input type="button" onclick="test()" value="dwrSession测试"/>
<hr/>
<input type="checkbox" id="工作" value="工作"/>工作
<input type="checkbox" id="饮食" value="工作"/>饮食
<input type="checkbox" id="居住 " value="居住"/>居住
<input type="checkbox" id="文化/娱乐 " value="文化/娱乐"/>文化/娱乐
<input type="checkbox" id="其它" value="其它"/>其它
<hr/>
<input type="button" onclick="init()" value="checkboxtext"/>
</body>
分享到:
相关推荐
5. **WebSocket与Long Polling**:虽然DWR的核心是Ajax,但它也支持WebSocket和Long Polling等更高效的实时通信技术。WebSocket提供了全双工的通信通道,而Long Polling则是通过长时间保持一个HTTP请求来模拟双向...
相比之下,推荐的做法是在 Java 服务方法中定义相应的参数,例如 HttpSession、HttpServletRequest 等,让 DWR 自动传入相应的对象。例如: ```java public void saveOrder(String id, String name, HttpSession ...
案例中可能展示了如何在DWR调用中使用和管理HttpSession,确保用户状态的正确维护。 5. **文件结构**: 压缩包中的文件可能包含以下部分: - `.classpath`:Eclipse项目类路径配置文件。 - `.mymetadata`:...
3. **文件名一致性**:在JSP页面中引用的`service.js`文件名必须与`dwr.xml`中定义的一致,否则会导致“对象未初始化”的错误。 遵循以上步骤,您就能够成功配置并使用DWR来实现从客户端JavaScript到服务器端Java的...
**DWR(Direct Web Remoting)中文帮助文档** DWR是一种JavaScript库,它允许Web应用程序在客户端...以上是与DWR相关的中文帮助文档所涵盖的部分关键知识点,深入理解和掌握这些内容,将有助于提升Java Web开发能力。
DWR3访问WEB元素主要有两种方法, 第一种是类似于...public void test(HttpSession session) { System.out.println(session.getId()); } public void test(String name, HttpServletRequest request) { Syst
当页面加载时,DWR会创建一个ScriptSession,并将其与HTTP会话(HttpSession)绑定。 2. **ScriptSessionId**:每个ScriptSession都有一个唯一的ID,可以用于在后端查找与特定浏览器会话相关的JavaScript环境。 3....
------------------------------------------------------------采用ajax验证,用户在文本框中输入的验证码,与系统生成的验证码,是否一致,如果一致,按钮可以点击 1、导入dwr.jar 2、在web.xml文件加载dwr 3...