dwr调用java session

There are only 2 Java classes that you commonly need to depend on within  DWR   as a user -  WebContext   andWebContextFactory . In  DWR   1.x these are in the  uk.ltd.getahead.dwr   package, for  DWR   2.0 onwards they are inorg.directwebremoting . These classes give you to access to the standard HTTP servlet objects:

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • ServletContext
  • ServletConfig

You use  WebContext   like this:

import uk.ltd.getahead.dwr

.WebContext;
import uk.ltd.getahead.dwr

.WebContextFactory;
///
WebContext ctx = WebContextFactory.get();
req = ctx.getHttpServletRequest();

It is important that you treat the HTTP request and response as read-only. While HTTP headers might get through OK, there is a good chance that some browsers will ignore them (IE ignores cache pragmas for example) Any attempt to change the HTTP body WILL cause  DWR   errors.

WebContext uses a ThreadLocal variable so you can use the line above anywhere in your code (so long as it has been fired off byDWR ).

See also the  JavaDoc   for  DWR   in general, or the specific page for  WebContext .

WebContext replaces ExecutionContext which is deprecated as of  DWR   1.1.

Alternative Method

It is possible to get access to the HTTP servlet objects without writing code that depends on  DWR   - just have the needed parameter (i.e. HttpServletRequest, HttpServletResponse, HttpSession, ServletContext or ServletConfig) declared on your method.  DWR   will not include it on the generated stub and upon a call of the method it will fill it in automagically.

For example if you have remoted a class like this:

public class Remote {
  public void method(int param, ServletContext cx, String s) { ... }
}

Then you will be able to access it from Javascript just as though the  ServletContext   parameter was not there:

Remote.method(42, "test", callback);

DWR   will do the work of filling in the parameter for you.

There is one slight caveat with this method. You should ensure you are not using the 'callback function as first parameter' idiom, instead use the 'callback as last parameter' or 'callback in meta-data object' idioms. See the  scripting introduction

你可能感兴趣的:(java,servlet,DWR,IE,Access)