DWR1.1.1的基本应用

DWR(直接Web远程控制)项目是在Apache许可下的一个开源的解决方案,它供给那些想要以一种简单的方式使用AJAX和 XMLHttpRequest的开发者。它具有一套Javascript功能集,它们把从HTML页面调用应用服务器上的Java对象的方法简化了。它操控不同类型的参数,并同时保持了HTML代码的可读性。

DWR不是对一个设计的插入,也不强迫对象使用任何种类的继承结构。它和 servlet框架内的应用配合的很好。对缺少DHTML编程经验的开发者来说,DWR也提供了一个JavaScript库包含了经常使用的DHTML任务,如组装表,用item填充select下拉框,改变HTML元素的内容,如<div>和<span>
DWR网站是详尽的并且有大量的文档,这也是这篇文章的基础。一些例子用来展示DWR如何使用和用它的库可以完成什么样的工作。

首先要加DWR的JAR包到你的CLASSPATH中或者Web应用的WEB-INF/lib目录中
然后在web.xml中增加一个servlet声明,并创建DWR的配置文件。DWR的分发中需要使用一个单独的jar文件。你必须将DWR servlet加到应用的WEB-INF/web.xml中。

   <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <display-name>DWR Servlet</display-name>
        <description>Direct Web Remoter Servlet</description>
        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>     //当DWR在调试模式时,
            <param-value>true</param-value>       //你可以从HTMl网页中看到所有的可访问的Java对象
        </init-param>
     </servlet>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
现在你必须让DWR知道通过XMLHttpRequest对象,什么对象将会接收请求。这个任务由叫做dwr.xml的配置文件来完成。在配置文件中,定义了DWR允许你从网页中调用的对象。从设计上讲,DWR允许访问所有公布类的公共方法,但在我们的例子中,我们只允许访问几个方法。下面是我们示例的配置文件:
<dwr>
   //初始化一个转换器,在DWR的默认里面没有我们需要的转换的时候 可以用到
      <init>
        <converter id="conver" class="com.xxx.util.*" />
    </init>
    <allow>
   //创建一个JAVABEAN 转换为JAVASCRIPT 对象 因为DWR默认的不会转换普通bean
   //不带param  默认访问所有该BEAN的所有属性
       <convert converter="bean" match="com.xxx.entity.Comments">
            <param name="include" value="id,articleId,author,email,content,time,status" />
     </convert>    
    //新建一个存在的方法,默认访问该类所有的方法,加上include method就只访问列出的方法
    <create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
            <include method="findApartments"/>
            <include method="countApartments"/>
        </create>
//结合SPRING的BEAN
      <create creator="spring" javascript="pageGenerationService">
         <param name="beanName" value="pageGenerationService" />
     </create>
    </allow>
</dwr>

配置完成后,你就可以启动你的Web应用了,这时DWR会为从你的HTML或Java服务器端页面(JSP)上调用所需方法作好准备,并不需要你创建 JavaScript文件。在jsp文件中, 我们必须增加由DWR提供的JavaScript接口,还有DWR引擎,加入以下三行到我们的代码中:
<script src='dwr/interface/ApartmentDAO.js'></script>
<script src='dwr/interface/pageGenerationService.js'></script>
  <script src='dwr/engine.js'></script>
  <script src='dwr/util.js'></script>

然后你就可以在JAVASCRITP中调用了pageGenerationService.method();ApartmentDAO.findApartments();
ApartmentDAO.countApartments();



安全因素
为了保持示例的简要,ApartmentDAO类尽可能的保持简单,但这样的一个类通常有一组设置方法来操作数据,如insert(), update()和delete()。DWR暴露了所有公共方法给所有的HTML页面调用。出于安全的原因,像这样暴露你的数据访问层是不明智的。开发者可以创建一个门面来集中所有JavaScript函数与底层业务组件之间的通信,这样就限制了过多暴露的功能。
 

你可能感兴趣的:(JavaScript,应用服务器,bean,servlet,DWR)