DWR使用总结

 1、DWR简介

DWRdirect web remoting):是一种改善JAVAWEB页面之间交互的AJAX开源框架,帮助JAVA程序更好的与页面进行交互。

2、DWR推送方式

(1) 被动推送

浏览器向服务器发送请求,服务器再根据请求将相应的数据返回给浏览器。

(2)主动推送

浏览器与服务器建立连接后,服务器保存这次连接,如果服务器有新的内容需要传到浏览器,则通过这个连接返回。

3、DWR配置过程

3.1导入JAR

dwr.jar,如果用到spring,还需要导入spring的JAR包

3.2配置web.xml
<servlet>

       <servlet-name>dwr</servlet-name>

    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

       <init-param>

           <param-name>debug</param-name>

           <param-value>true</param-value>

       </init-param>

       <init-param>

           <param-name>disconnectedTime</param-name>

           <param-value>100</param-value>

       </init-param>

       <init-param>

           <param-name>maxWaitAfterWrite</param-name>

           <param-value>500</param-value>

       </init-param>

       <load-on-startup>4</load-on-startup>

    </servlet>

    <servlet-mapping>

       <servlet-name>dwr</servlet-name>

       <url-pattern>/dwr/*</url-pattern>

    </servlet-mapping>

3.3配置dwr.xml

<dwr>

    <allow>

       <convert converter="bean" match="com.dwr.UserBean"/>

       <create creator="new" javascript="userAdapter">

           <param name="class" value="com.dwr.UserAdapter"/>

       </create>

       <create creator="spring" javascript="userAdapter2">

           <param name="beanName" value="userAdapter2"></param>

       </create>

    </allow>

</dwr>

业务类在DWR的配置方式有两种:

一种是直接创建业务类,creator的值是new;另一种是使用springbeancreator的值是spring

如果要使用到用户自定义的BEAN,只需要在dwr.xml加上

<convert converter="bean" match="com.dwr.UserBean"/>
       

则可。

3.4主体类
public class UserBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private String username;

    private String password;

    public String getUsername() {

       returnusername;

    }

    public void setUsername(String username) {

       this.username = username;

    }

    public String getPassword() {

       returnpassword;

    }

    public void setPassword(String password) {

       this.password = password;

    }

}

 

public class UserAdapter {

    public UserBean getUser(String username){

       UserBean userBean = new UserBean();

       userBean.setUsername("li");

       userBean.setPassword("111");

       return userBean;

    }

    /**

     * 向页面/Sample/dwr_test.jsp中的方法pushBySession推送数据。

     */

    public void testPush(){

       ScriptBuffer scriptBuffer =new ScriptBuffer();

       scriptBuffer.appendScript("try{");

       scriptBuffer.appendScript("if(pushBySession){");

       scriptBuffer.appendScript("pushBySession");

       scriptBuffer.appendScript("(");

       scriptBuffer.appendData("result");

       scriptBuffer.appendScript(")}");

       scriptBuffer.appendScript("} catch(e){}");

       

       Collection<ScriptSession> sessions =WebContextFactory.get().getScriptSessionsByPage("/Sample/dwr_test.jsp");

       if (sessions ==null) {

           return;

       }

       for (ScriptSession scriptSession : sessions) {

           if (scriptSession !=null) {

              scriptSession.addScript(scriptBuffer);

           }

       }

    }

    

    public static void main(String[] args){

       new UserAdapter().testPush();

    }

3.5页面配置

dwr_test.jsp

   

 <!-- DWR -->

    <script type="text/javascript" src="${pageContext.request.contextPath}/dwr/interface/userAdapter.js"></script>

    <script type="text/javascript" src="${pageContext.request.contextPath}/dwr/engine.js"></script>

    <script type="text/javascript" src="${pageContext.request.contextPath}/dwr/util.js"></script>

    <script>

    function getUser(){

       userAdapter.getUser('me',function(userBean){

        alert("username="+userBean.username+",password="+userBean.password);

       });

    }


    function pushBySession(value){

       alert("pushBySession value:"+value);

    }

    </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值