我們?cè)趯?shí)際的 web 應(yīng)用開發(fā)過程中,在用戶登錄后會(huì)向 session 中塞入一些信息(例如用戶信息,菜單信息等),在頁(yè)面提交后,會(huì)從 session 中取出這些信息,拼成完整的業(yè)務(wù)記錄,保存到數(shù)據(jù)庫(kù)中。此時(shí)就要求 DWR 可以與 Servlet 對(duì)象通信。
其實(shí) DWR 已經(jīng)考慮好了,在 DWR1.1 中可以利用 uk.ltd.getahead.dwr.WebContext 和 uk.ltd.getahead.dwr.WebContextFactory 來和 Http Servlet 的標(biāo)準(zhǔn)對(duì)象進(jìn)行通信,包括:
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;
/// WebContext ctx = WebContextFactory.get(); HttpServletRequest req = ctx.getHttpServletRequest(); |
?????? WebContext 是使用 ThreadLocal 保存的,你可以看一下 uk.ltd.getahead.dwr.impl.DefaultWebContextBuilder 源碼,所以可以在任何地方使用它,例如在上一篇的 demo 中進(jìn)行測(cè)試如下:
在
index.html
頭部增加如下代碼并改名為
index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<% System.out.println("This is DWR servlet object!");
session.setAttribute("dwr","love dwr"); %> |
修改
MessageDao.java
的代碼如下
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");
??? }
} |