TryDone
搜索
会员列表
返回首页
热门主题
最新主题
会员名称:
登入密码:
自动登入:
登入
注册
忘记密码
启用我的帐号
[原]在DWR中如何取到request,session等
论坛首页
»
项目开发
»
Java开发交流
发表人
内容
2007-09-01 11:08:36
文章主题:
[原]在DWR中如何取到request,session等
pinke
注册时间: 2006-11-18 22:27:35
文章: 919
离线
性别: 男
出生:1982-06-18
在使用DWR时经常有人找不到如何取session,因为Bean的有些方法是要在登陆情况下才能使用,所以网上有很多人想了其它的方法,比如使用过滤器来处理等等,这里我讲的是使用DWR自身的方法来取到,代码如下:
import uk.ltd.getahead.dwr.WebContext; import uk.ltd.getahead.dwr.WebContextFactory; ... public String getSessionId() { WebContext webContext = WebContextFactory.get(); return webContext.getSession().getId(); } ...
如上代码,只为了取一个SessionId,其中有一个Factory是专来处理WebContext的,看到这里应该明白了
而WebContext的原型如下
package uk.ltd.getahead.dwr; public interface WebContext { uk.ltd.getahead.dwr.Container getContainer(); javax.servlet.http.HttpSession getSession(); javax.servlet.http.HttpSession getSession(boolean b); javax.servlet.ServletConfig getServletConfig(); javax.servlet.ServletContext getServletContext(); javax.servlet.http.HttpServletRequest getHttpServletRequest(); javax.servlet.http.HttpServletResponse getHttpServletResponse(); java.lang.String forwardToString(java.lang.String string) throws javax.servlet.ServletException, java.io.IOException; java.lang.String getVersion();
可以看到所有你想要的HttpServletRequest ,HttpServletResponse ,HttpSession 都可以在这里取得到
那他是如果工作的呢,看了一下代码,我能理解是:
当DWR初始化时: DWRServlet ->AbstractDWRServlet.init(..)
在init中 WebContextFactory.setWebContextBuilder(builder);
当一个client 访问 DWRServlet ->AbstractDWRServlet.doPost(...) 时
builder.set(req, resp, getServletConfig(), getServletContext(), container);
这里线程更新了WebContextBuilder
所以在WebContextFactory中get时取到的都是当前用户的所请求的相关信息(session,request,response)
你能理解了吗:)
不理解没关系,你只要记得在DWR的Bean中使用
WebContext webContext = WebContextFactory.get(); webContext.getSession() ; webContext.getHttpServletRequest() ; webContext.getHttpServletResponse();
享我所想,乐你所乐
论坛首页
»
项目开发
»
Java开发交流
前往:
选择一个版面
初来乍到
磅磅潭
JForum论坛
Jabber IM
源源不断
Java开发交流
ASP/DOTNET
C/C++
B/S开发
软件工程
Samples
病毒防治
安全相关
IT综合
IDC交流
需求交流
周未动员
MUD 交流
Powered by
JForum 2.1.8
©
JForum Team
Template:
Trydone