`
sunxboy
  • 浏览: 2869184 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

DWR中取得session等信息(转)

阅读更多

DWR Java API

There are only 2 Java classes that you commonly need to depend on within DWR as a user - WebContext and WebContextFactory. In DWR 1.x these are in the uk.ltd.getahead.dwr package, for DWR 2.0 onwards they are in org.directwebremoting. These classes give you to access to the standard HTTP servlet objects:

    * HttpServletRequest
    * HttpServletResponse
    * HttpSession
    * ServletContext
    * ServletConfig

You use WebContext like this:

import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
///
WebContext ctx = WebContextFactory.get();
req = ctx.getHttpServletRequest();

It is important that you treat the HTTP request and response as read-only. While HTTP headers might get through OK, there is a good chance that some browsers will ignore them (IE ignores cache pragmas for example) Any attempt to change the HTTP body WILL cause DWR errors.

WebContext uses a ThreadLocal variable so you can use the line above anywhere in your code (so long as it has been fired off by DWR).

See also the JavaDoc for DWR in general, or the specific page for WebContext.

WebContext replaces ExecutionContext which is deprecated as of DWR 1.1.
Alternative Method

It is possible to get access to the HTTP servlet objects without writing code that depends on DWR - just have the needed parameter (i.e. HttpServletRequest, HttpServletResponse, HttpSession, ServletContext or ServletConfig) declared on your method. DWR will not include it on the generated stub and upon a call of the method it will fill it in automagically.

For example if you have remoted a class like this:

public class Remote {
  public void method(int param, ServletContext cx, String s) { ... }
}

Then you will be able to access it from Javascript just as though the ServletContext parameter was not there:

Remote.method(42, "test", callback);

DWR will do the work of filling in the parameter for you.

There is one slight caveat with this method. You should ensure you are not using the 'callback function as first parameter' idiom, instead use the 'callback as last parameter' or 'callback in meta-data object' idioms. See the scripting introduction

----------------------------------------------------------------------

最近我们的项目决定采用Ajax技术实现一些功能,最后采用了DWR.在使用DWR的时候,遇到了要获取session中保存的用户信息的问题.上网查了一下资料,测试成功后简单记录起来.

在DWR中需要用到session,request等这些东西的时候,可以用以下方法获取:
1. 使用DWR的API (很多人都不推荐这种做法,经测试,使用起来肯定没问题)
WebContext ctx = WebContextFactory.get();
ctx.getSession()
ctx.getHttpServletRequest()
...

2. 在Java的服务方法中定义这些类型的参数,让DWR自动传入相应的对象:
HttpServletRequest,HttpServletResponse,HttpSession,ServletContext,ServletConfig.
示例如下:
Java端定义方法: saveOrder(String id, String name, HttpSession session)
Javascript调用: OrderService.saveOrder(jsID,jsName,callBack)
注意,这里不需要传入session这个参数,DWR会自动传入,在Java端可以直接使用. 

 

分享到:
评论

相关推荐

    DWR中取得session等信息.doc

    DWR 中取得 Session 等信息 DWR(Direct Web Remoting)是一种基于 Ajax 的远程调用技术,允许开发者在 Web 应用程序中轻松地调用 Java 服务端方法。然而,在使用 DWR 时,如何取得 Session 中保存的用户信息成为一...

    DWR中文文档DWR

    - **web.xml**:在Web应用的部署描述符中配置DWR的Servlet,如`dwr-servlet.xml`,设置过滤器等。 - **dwr.properties**:配置DWR的行为,如错误处理、缓存策略等。 - **XML配置**:可使用XML文件定义允许客户端...

    DWR中文文档.pdfDWR中文文档.pdf

    10. **集成其他框架**:DWR可以很好地与Spring、Struts等Java Web框架集成,使得在这些框架中使用DWR变得简单。 在阅读这份中文文档时,你可以深入理解DWR的工作原理,学习如何配置和使用DWR,以及如何在实际项目中...

    dwr练习实例(各种数据转换list,map,数组等)

    在这个实例中,我们将探讨DWR如何处理List、Map以及数组等常见的数据结构。 首先,让我们理解DWR的核心功能。DWR的主要作用是创建一个安全、高效的桥梁,使得JavaScript可以直接调用服务器端的Java方法,而无需进行...

    DWR2.0中文文档

    DWR2.0中文文档不仅是一份详尽的指南,更是深入理解DWR框架及其在各种Web应用框架中应用的关键。通过本书的学习,开发者能够掌握DWR的基本概念、配置方法以及与主流Web框架的整合技巧,为构建高效、安全的Ajax应用...

    DWR中文文档(pdf)

    - **集成DWR**: 将DWR框架加入到项目中,通常通过将DWR的jar包添加到项目的类路径中完成。 - **配置文件**: 编辑`web.xml`和`dwr.xml`文件,设置DWR的工作模式和各种参数。 ##### 1.2 HelloWorld示例 - **配置文件...

    DWR中文帮助文档(最好的DWR中文帮助文档)

    8. **错误处理与调试**:文档会介绍如何处理DWR调用过程中出现的错误,以及如何开启调试模式,获取更详细的错误信息。 9. **示例与最佳实践**:为了更好地理解和使用DWR,文档通常会包含丰富的代码示例和最佳实践...

    dwr中文文档pdf格式

    1. **引入DWR库**:在Web应用中添加DWR的JAR文件,并在Web.xml中配置DWR的Servlet。 2. **创建Java接口**:定义要在客户端使用的Java接口,这些接口将被DWR暴露给JavaScript。 3. **生成配置文件**:使用DWR生成器...

    DWR中文文档v0.9PDF

    在《DWR中文文档v0.9》中,读者可以找到关于如何配置DWR、创建DWR接口、调用远程方法、处理异常、调试DWR应用等全面的教程和示例。这份文档不仅适合初学者,也对有经验的开发者有很高的参考价值,可以帮助他们更好地...

    DWR中处理List

    通过上述示例可以看出,在DWR中处理List、Set和Map等集合类型的关键在于正确配置DWR XML文件,并编写合适的客户端JavaScript代码来调用服务端的方法及处理返回的数据。这种方式大大简化了前后端之间的数据交换过程,...

    DWR中文文档 ,非常详细

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的、双向的JavaScript和服务器端代码交互。这个技术允许开发者在客户端浏览器上执行服务器端的方法,就像它们是本地JavaScript函数一样,极大...

    DWR中文文档 (DWR 2.0)

    4. **添加DWR依赖**:将下载的DWR库文件添加到项目的类路径中。 5. **编写Java服务端代码**: - 创建一个简单的Java类,例如`HelloWorldService`,定义一个公开的方法,如`sayHello()`。 - 使用DWR注解标记该方法...

    dwr dwrdwr

    dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr

    DWR中文教程(外带DWR包)

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的JavaScript到服务器端Java对象的通信。这个“DWR中文教程(外带DWR包)”为初学者提供了一个全面的入门指南,帮助理解并掌握DWR的基本概念和...

    dwr3.0以及相关中文文档

    6. **调试与日志**:介绍如何开启DWR的调试模式,查看请求和响应的详细信息,以及如何配置日志系统以获取运行时信息。 7. **最佳实践**:提供关于如何有效使用DWR,避免常见问题,以及优化性能的建议。 8. **示例*...

    DWR中文官方文档-打包下载

    DWR提供了丰富的JavaScript API,与jQuery、Prototype等库良好集成,方便在现有项目中使用。 8. **DWR的安全性和最佳实践**: - 应该限制暴露给客户端的方法,避免暴露敏感信息。 - 使用最新版本的DWR,以获取...

    DWR2.0 中文手册

    5. **错误处理**:DWR提供了丰富的错误处理机制,包括客户端和服务器端的异常处理,以及错误信息的传递和显示。 6. **缓存策略**:DWR 2.0支持缓存策略,可以缓存远程调用的结果,提高性能,减少服务器压力。 7. *...

Global site tag (gtag.js) - Google Analytics