加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DWR使用总结

发布时间:2020-12-15 22:11:29 所属栏目:百科 来源:网络整理
导读:1、DWR 简介 DWR ( direct web remoting ):是一种改善 JAVA 与 WEB 页面之间交互的 AJAX 开源框架,帮助 JAVA 程序更好的与页面进行交互。 2、DWR推送方式 (1) 被动推送 浏览器向服务器发送请求,服务器再根据请求将相应的数据返回给浏览器。 (2) 主

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读