DWR中取得request,session等信息
来源:互联网 发布:安工大网络接入系统 编辑:程序博客网 时间:2024/05/21 06:22
在DWR中需要用到session,request等这些东西的时候,可以用以下方法获取:
1. 使用DWR的API (很多人都不推荐这种做法,经测试,使用起来肯定没问题)
WebContext ctx = WebContextFactory.get();
ctx.getSession()
ctx.getHttpServletRequest()
...
2. 在Java的服务方法中定义这些类型的参数,让DWR自动传入相应的对象:
HttpServletRequest,HttpServletResponse,HttpSession,ServletContext,ServletConfig.
示例如下:
Java端定义方法: saveOrder(String id, String name, HttpSession session)
Javascript调用: OrderService.saveOrder(jsID,jsName,callBack)
注意,这里不需要传入session这个参数,DWR会自动传入,在Java端可以直接使用.
在使用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();
}
...
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();
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();
WebContext webContext = WebContextFactory.get(); webContext.getSession() ; webContext.getHttpServletRequest() ; webContext.getHttpServletResponse();
0 0
- DWR中取得request,session等信息
- DWR中取得session等信息
- DWR中取得session等信息
- DWR中取得session等信息
- DWR中取得session等信息
- dwr中取得session信息
- DWR中获取Session,Request,Response等信息
- dwr中获取session、request等对象
- DWR中如何获取Request、Session等对象
- dwr取得request的一些信息!!~
- Spring中取得session,request等對象
- DWR应用中如何取得session
- DWR中session.及request的用法
- 在DWR中需要用到session,request
- DWR中获得request,response,session
- dwr中取 session,request,respon
- dwr中取session,request,response
- 在DWR调用的java代码中使用Session,Request,Response等
- j2ee过滤器设置
- js向jsp页面/后台传值中文乱码
- encodeURIComponent的使用
- Unity3D游戏开发之Lua与游戏的不解之缘(上)
- Quartz管理类
- DWR中取得request,session等信息
- 【引用】Java定时触发器
- 【引用】2011 程序员薪资调查报告
- 浅析gcc、arm-linux-gcc和arm-elf-gcc关系
- Dialong弹窗与PopWindow弹窗
- DES加密与解密的java实现
- 8.1.4 在 F# 中使用函数列表
- 【转载】Servlet监听器
- 64位windows安装tomcat支持jsp