There are only 2 Java classes that you commonly need to depend on within
DWR
as a user -
WebContext
andWebContextFactory
. In
DWR
1.x these are in the
uk.ltd.getahead.dwr
package, for
DWR
2.0 onwards they are inorg.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 byDWR
).
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
分享到:
相关推荐
DWR(Direct Web Remoting)是一种基于 Ajax 的远程调用技术,允许开发者在 Web 应用程序中轻松地调用 Java 服务端方法。然而,在使用 DWR 时,如何取得 Session 中保存的用户信息成为一个需要解决的问题。本文将...
4. **JavaScript调用Java**:在JavaScript中,我们可以使用DWR的API来调用服务器端的方法。例如: ```javascript DWRUtil.useLoadingMessage("正在处理..."); MyService.executeTask(data, { success: function...
- **Remote Procedure Call (RPC)**:DWR支持通过HTTP协议执行远程过程调用,使得JavaScript可以直接调用Java方法。 - **Marshalling and Unmarshalling**:DWR自动处理数据在JavaScript对象和Java对象之间的序列...
例如,通过DWR调用的方法可以决定是否在session中设置特定的标志,从而影响后续JSP页面的行为。 3. **错误处理**:DWR调用的服务器端方法如果抛出异常,可以捕获并将异常信息返回给客户端,此时可以利用DWR的错误...
7. **整合 Hibernate**: 如果项目中使用了 Hibernate 作为持久层框架,可以在 DWR 接口中调用 Hibernate 的 Session 或 EntityManager 来处理数据库操作。确保在多线程环境中正确管理和关闭数据库连接。 **DWR 的...
4. **JavaScript API**:DWR生成的JavaScript库提供了易于使用的API,如`DWR Engine`、`DWREngine`和`RemoteObject`等,使得开发者能够轻松地从JavaScript调用服务器端Java方法。 接下来,我们将详细探讨DWR的操作...
Direct Web Remoting (DWR) 是一个开源Java库,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用Java方法,从而实现了富互联网应用(RIA)的功能。DWR通过Ajax技术提供了这种...
对于性能优化,可以考虑启用缓存,控制并发请求的数量,以及合理地组织DWR调用。 7. **调试与日志** DWR提供了丰富的调试和日志功能。通过调整`web.xml`中的`debug`参数,你可以开启或关闭调试模式。日志信息可以...
`<allow>`标签是配置DWR允许操作的关键部分,它定义了哪些Java类可以被JavaScript调用,以及如何转换Java对象。例如: ```xml ``` - **create**: 定义一个远程Java对象,可以通过JavaScript访问。`creator`...
- **调用Java方法**:在JavaScript中,通过生成的接口调用对应的Java方法,DWR会自动处理网络通信。 5. **DWR的安全性**:DWR提供了安全机制,如CSRF防护、白名单机制和Session管理,以防止恶意的远程调用。 6. *...
DWR通过将Java对象转换为JavaScript对象,使得在浏览器端可以直接调用服务器端的方法,从而简化了客户端与服务器端的数据交换。 **DWR搭建步骤** 1. **引入dwr.jar** - 将DWR的jar包添加到项目的lib目录下,这是...
首先,DWR允许我们在JavaScript中直接调用Java方法,这使得前后端交互变得更加直观。在项目中,我们需要在DWR配置文件(通常为dwr.xml)中定义允许的远程方法,这样JavaScript就能通过DWR引擎调用这些方法,获取...
5. **DWR调用Java方法** - 在服务器端,你需要创建一个Java方法(例如`getCityListByProvinceCode`),该方法接受省份代码作为参数,查询数据库并返回城市列表。DWR会自动处理这个方法的调用,将结果转换为...
3. **C/ajax.js**:这是DWR生成的一个JavaScript库,包含了与服务器通信的API,使得在JavaScript中可以调用Java方法变得简单。 4. **Batching**:DWR支持批量处理,可以在一个HTTP连接中执行多个Java方法调用,从而...
DWR允许JavaScript直接调用服务器端的Java方法,并将结果返回到客户端,无需传统的HTTP请求。这种实时通信使得前端可以即时响应服务器端的变化,为防止重复登录提供了基础。 实施此功能的第一步是建立用户表。表的...
DWR的核心理念是将服务器端Java对象暴露给客户端JavaScript,这样JavaScript可以直接调用服务器端的方法,就像调用本地函数一样简单。这一过程涉及到了一系列的技术和优化: 1. **远程方法调用**:DWR实现了远程...
Direct Web Remoting (DWR) 是一个开源框架,它简化了从JavaScript调用Java方法的过程。DWR不仅提供了远程调用的功能,还内置了一些辅助功能,例如数据序列化和安全性检查等。本文档将详细解释如何在Web应用中配置...