<create creator="new" javascript="Hello" scope="session">
<param name="class" value="test.com.commonpub.DwrPrepare" />
</create>
配置一个dwr对象,有一个scope范围,假设我把它设置为session,是不是运行过程是这样的,如果,session范围内没有Hello这个对象,就new一个,否则直接用session中已经存在的对象?

解决方案 »

  1.   

    涉及到DWR的时候很少有人问这样的问题,因为大家觉得它并不重要,但我认为这是DWR的核心部分。执行第一次的时候,它创建了,执行第二次的时候,它并没有创建。说明两次请求是同一个session.用户在这一界面,在以后的请求中,它会给当前用户分配一个  session,而对于这个session来讲,只要这个用户不关闭浏览器,它的session是唯一的。我再请求的话,它还是在同一个session作用范围内。所以它仅仅会创建一次对象。而其他只要在同一个session中,它就会为我们提供UserLogic对象而不用我们去创建。这就是session为我们提供的作用范围。
      

  2.   


    <create> 标签中指定 javascript 中可以访问的 java 类,并定义 DWR 应当如何获得要进行远程的类的实例。 creator="new" 属性指定 java 类实例的生成方式, new 意味着 DWR 应当调用类的默认构造函数来获得实例,其他的还有 spring 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。 javascript=" testClass " 属性指定 javascript 代码访问对象时使用的名称。 <param> 标签指定要公开给 javascript 的 java 类名。 <include> 标签指定要公开给 javascript 的方法。不指定的话就公开所有方法。 <exclude> 标签指定要防止被访问的方法。 scope="session" 代表类的实例在session范围内。