`
ldsjdy
  • 浏览: 150872 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DWR 与HttpSession

    博客分类:
  • AJAX
阅读更多
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>
分享到:
评论

相关推荐

    DWR即时通讯

    5. **WebSocket与Long Polling**:虽然DWR的核心是Ajax,但它也支持WebSocket和Long Polling等更高效的实时通信技术。WebSocket提供了全双工的通信通道,而Long Polling则是通过长时间保持一个HTTP请求来模拟双向...

    DWR中取得session等信息.doc

    相比之下,推荐的做法是在 Java 服务方法中定义相应的参数,例如 HttpSession、HttpServletRequest 等,让 DWR 自动传入相应的对象。例如: ```java public void saveOrder(String id, String name, HttpSession ...

    dwr案例(ajax)

    案例中可能展示了如何在DWR调用中使用和管理HttpSession,确保用户状态的正确维护。 5. **文件结构**: 压缩包中的文件可能包含以下部分: - `.classpath`:Eclipse项目类路径配置文件。 - `.mymetadata`:...

    DWR简单配置说明---xml、java、jsp层层说明

    3. **文件名一致性**:在JSP页面中引用的`service.js`文件名必须与`dwr.xml`中定义的一致,否则会导致“对象未初始化”的错误。 遵循以上步骤,您就能够成功配置并使用DWR来实现从客户端JavaScript到服务器端Java的...

    dwr中文帮助文档

    **DWR(Direct Web Remoting)中文帮助文档** DWR是一种JavaScript库,它允许Web应用程序在客户端...以上是与DWR相关的中文帮助文档所涵盖的部分关键知识点,深入理解和掌握这些内容,将有助于提升Java Web开发能力。

    DWR3 访问WEB元素的两种方法实例详解

    DWR3访问WEB元素主要有两种方法, 第一种是类似于...public void test(HttpSession session) { System.out.println(session.getId()); } public void test(String name, HttpServletRequest request) { Syst

    Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端

    当页面加载时,DWR会创建一个ScriptSession,并将其与HTTP会话(HttpSession)绑定。 2. **ScriptSessionId**:每个ScriptSession都有一个唯一的ID,可以用于在后端查找与特定浏览器会话相关的JavaScript环境。 3....

    采用ajax实现的图片验证码

    ------------------------------------------------------------采用ajax验证,用户在文本框中输入的验证码,与系统生成的验证码,是否一致,如果一致,按钮可以点击 1、导入dwr.jar 2、在web.xml文件加载dwr 3...

Global site tag (gtag.js) - Google Analytics