DWR 与 Servlet
有 2 个 Java 类你一般需要用在 DWR 中,是 webContext 和 WebContextFactory
在 DWR 1.x 它们在 uk.ltd.getahead.dwr 包, DWR 2.0+在 org.directwebremoting 包。这 2 个类给与你访问标准 Http servlet 对象的入口。这些对象是:
•HttpServletRequest
•HttpServletResponse
•HttpSession
•ServletContext
•ServletConfig
1.使用 webContext 的方法:
1 import uk.ltd.getahead.dwr.WebContext; 2 import uk.ltd.getahead.dwr.WebContextFactory; 3 // 4 WebContext ctx = WebContextFactory.get(); 5 req = ctx.getHttpServletRequest();
处理 Http request 和 response 做为只读是非常重要的。因为,当 Http headers 也许会通过,那么有些浏览器会忽略它们(比如 IE 忽略缓存参数)。任何尝试改变 Http body 将会导致 DWR 错误。
WebContext 使用一个本地线程变量,所以你能使用以上的代码放在任何地方。
也可以看一下 DWR 的 Java 文档 ,或者详细看一下 WebContext 。
WebContext 代替了 DWR1.1 中的 ExecutionContext。
2.方法选择
在没有写依赖于 DWR 的代码时,要能够访问 Http servlet 对象是可以做到的(比如 HttpServletRequest,HttpServletResponse, HttpSession, ServletContext or ServletConfig)。DWR 将自动填充它。
举个例子:
1 public class Remote { 2 public void method(int param, ServletContext cx, String s) { ... } 3 }
然后你将可以从 Javascript 中通访问它尽管没有 ServletContext 参数:
Remote.method(42, "test", callback);
DWR 将为你填充这个参数。
对这个方法这里有个小小的警告,你要保证你的没有把’callback function’作为第一个参数,而应该把它作为最后一个参数,或者作为元数据对象