我们在实际的
web
应用开发过程中,在用户登录后会向
session
中塞入一些信息(例如用户信息,菜单信息等),在页面提交后,会从
session
中取出这些信息,拼成完整的业务记录,保存到数据库中。此时就要求
DWR
可以与
Servlet
对象通信。
其实
DWR
已经考虑好了,在
DWR1.1
中可以利用
uk.ltd.getahead.dwr.WebContext
和
uk.ltd.getahead.dwr.WebContextFactory
来和
Http Servlet
的标准对象进行通信,包括:
l
HttpServletRequest
l
HttpServletResponse
l
HttpSession
l
ServletContext
l
ServletConfig
具体调用的方法如下:
import
javax.servlet.http.HttpServletRequest;
import
uk.ltd.getahead.dwr.WebContext;
import
uk.ltd.getahead.dwr.WebContextFactory;
import org.directwebremoting.WebContextFactory; //DWR2.0改成这样
//
/
WebContext ctx
=
WebContextFactory.get();
HttpServletRequest req
=
ctx.getHttpServletRequest();
WebContext 是使用ThreadLocal保存的,你可以看一下uk.ltd.getahead.dwr.impl.DefaultWebContextBuilder源码,所以可以在任何地方使用它,例如在上一篇的demo中进行测试如下:
页面里给session设置值
<%@ page contentType="text/html; charset=GBK" %>
<%
System.out.println("This is DWR servlet object!");
session.setAttribute("dwr","love dwr");
%>
DWR要调用的类文件
package test.dwr;
import javax.servlet.http.HttpServletRequest;
import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
public class MessageDao {
public Message save(Message message) {
WebContext ctx = WebContextFactory.get();
HttpServletRequest req = ctx.getHttpServletRequest();
System.out.println("========HttpServletRequest Begin=======");
System.out.println("req:" + req.getRemoteHost());
System.out.println("req-session:" + req.getSession().getAttribute("dwr"));
System.out.println("text:" + req.getParameter("text"));
System.out.println("from:" + req.getParameter("from"));
System.out.println("=========HttpServletRequest End========");
System.out.println("========Lucky DWR Begin=======");
System.out.println("text:" + message.getText());
System.out.println("from:" + message.getFrom());
System.out.println("=========Lucky DWR End========");
return message;
}
public Message get() {
return new Message("This is the first dwr demo!", "test");
}
}
posted on 2006-11-21 23:01
有猫相伴的日子 阅读(2861)
评论(0) 编辑 收藏 所属分类:
dwr