zoukankan      html  css  js  c++  java
  • DWR 在项目中的应用

    1. DWR框架简介   
    2. DWR框架是一个可以允许你去创建 AJAX WEB站点的JAVA开源库。它可以让你在浏览器的JavaScript代码中调用Web服务器的Java代码,就像Java代码在浏览器中一 样。DWR工作原理是通过动态把Java类生成JavaScript,让使用者感觉调用就像发生在浏览器端。 
      1. 2、DWR的使用场合   
      2. 当我们的业务需要在页面不提交的情况下访问服务器端并实现页面数据局部刷新时,我们就可以使用DWR。
        1. 1、导入dwr的jar包   
        2. 2、编写一个dwr框架在页面中用JavaScript要调用到的java类。 
        3. web.xml中的配置
        4.  <servlet>
              <servlet-name>dwr-invoker</servlet-name>
              <display-name>DWR Servlet</display-name>
              <description>Direct Web Remoter Servlet</description>
              <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

              <!-- This should NEVER be present in live -->
              <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
              </init-param>

              <!-- Remove this unless you want to use active reverse ajax -->
              <init-param>
                <param-name>activeReverseAjaxEnabled</param-name>
                <param-value>true</param-value>
              </init-param>

              <!-- By default DWR creates application scope objects when they are first
              used. This creates them when the app-server is started -->
              <init-param>
                <param-name>initApplicationScopeCreatorsAtStartup</param-name>
                <param-value>true</param-value>
              </init-param>

              <!-- This enables full streaming mode. It's probably better to leave this
              out if you are running across the internet -->
              <init-param>
                <param-name>maxWaitAfterWrite</param-name>
                <param-value>-1</param-value>
              </init-param>

              <!--
              For more information on these parameters, see:
              - http://getahead.org/dwr/server/servlet
              - http://getahead.org/dwr/reverse-ajax/configuration
              -->

              <load-on-startup>1</load-on-startup>
            </servlet>

            <servlet-mapping>
              <servlet-name>dwr-invoker</servlet-name>
              <url-pattern>/dwr/*</url-pattern>
            </servlet-mapping>
        5. Dwr.xml
        6. <dwr>

            <allow>

              <!--
              <filter class="org.getahead.dwrdemo.monitor.MonitoringAjaxFilter"/>
              <filter class="org.directwebremoting.filter.ExtraLatencyAjaxFilter">
                <param name="delay" value="200"/>
              </filter>
              -->

              <!-- intro - for the test on index.html -->
              <create creator="new" javascript="Intro">
                <param name="class" value="org.getahead.dwrdemo.intro.Intro"/>
              </create>

              
              <convert match="com.dianzhi.bean.City" converter="bean">
              <param name="include" value="cityId,cityName" />
              </convert>
              
              <!-- simpletext -->
              <create creator="new" javascript="DWRService">
                <param name="class" value="com.dianzhi.DWRService"/>
              </create>

            </allow>

          </dwr>
          1. 5、编写jsp页面,用javascript调用后台的java代码  
          2.     <script type='text/javascript'
                        src='/dwr_mycity/dwr/interface/DWRService.js'>
            </script>
                    <script type='text/javascript' src='/dwr_mycity/dwr/engine.js'>
            </script>

                    <script type='text/javascript' src='/dwr_mycity/dwr/util.js'>
            </script>
                    <script type="text/javascript" src="jquery/jquery-1.3.2.js">
            </script>
                    <script type="text/javascript">
            window.onload=function(){
                    DWRService.getPropive(function(data){
                        for(var p in data){
                            //alert(p);
                        //    alert(data[p]);
                            var option = document.createElement("option");
                            option.innerHTML=data[p];
                            option.value=p;
                            document.getElementById("provice").appendChild(option);
                        }
                    });
                }
            function loadshi(id){
                //alert("aaaa");
                DWRService.getCity(id,function(data){
                    document.getElementById("city").innerHTML="" ;
                    document.getElementById("qu").innerHTML="" ;
                    for(var c in data){
                        var option =document.createElement("option");
                        option.innerHTML=data[c];
                        option.value=c;
                        document.getElementById("city").appendChild(option);
                    }
                    
                });
            }
            function loadqu(id){
                //alert("aaaa");
                DWRService.getQu(id,function(data){
                    document.getElementById("qu").innerHTML="" ;
                    for(var q in data){
                        var option =document.createElement("option");
                        option.innerHTML=data[q];
                        option.value=q;
                        document.getElementById("qu").appendChild(option);
                    }
                    
                });
            }
            </script>
                </head>

                <body>
                    <select id="provice" onchange="loadshi(this.value)">
                    </select>
                    <select id="city" onchange="loadqu(this.value)">
                    </select>
                    <select id="qu">
                    </select>
                </body>
            </html>
          3. public class DWRService {
                /*public List<City> getPropive (){
                    ICityDao dao = new CityDao();
                    List<City> list =dao.findByParentId(0);
                    for (City city : list) {
                        System.out.println(city.getCityId()+"..."+city.getCityName());
                        
                    }
                    System.out.println(list.size());
                    return list;
                    
                }*/
                public Map<Integer,String> getPropive (){
                    ICityDao dao = new CityDao();
                    List<City> list =dao.findByParentId(0);
                    Map<Integer,String> map = new HashMap<Integer,String>();
                    for (City city : list) {
                        //System.out.println(city.getCityId()+"..."+city.getCityName());
                        map.put(city.getCityId(), city.getCityName());
                    }
                    return map;
                    
                }
                public Map<Integer,String> getCity(int id){
                    
                    ICityDao dao = new CityDao();
                    List<City> list =dao.findByParentId(id);
                    Map<Integer,String> map = new HashMap<Integer,String>();
                    for (City city : list) {
                        //System.out.println(city.getCityId()+"..."+city.getCityName());
                        map.put(city.getCityId(), city.getCityName());
                    }
                    return map;
                    
                }
                public Map<Integer,String> getQu(int id){
                    
                    ICityDao dao = new CityDao();
                    List<City> list =dao.findByParentId(id);
                    Map<Integer,String> map = new HashMap<Integer,String>();
                    for (City city : list) {
                        //System.out.println(city.getCityId()+"..."+city.getCityName());
                        map.put(city.getCityId(), city.getCityName());
                    }
                    return map;
                    
                }



  • 相关阅读:
    当物联网遇上云原生:K8s向边缘计算渗透中
    NLP预训练发展小结一(Bert之前)
    netty系列之:搭建HTTP上传文件服务器
    netty系列之:搭建自己的下载文件服务器
    HTTP系列之:HTTP中的cookies
    HTTP系列之:HTTP缓存
    netty系列之:自建客户端和HTTP服务器交互
    [源码解析] 深度学习流水线并行 PipeDream(3)--- 转换模型
    [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区
    [源码解析] 深度学习流水线并行之PipeDream(1)--- Profile阶段
  • 原文地址:https://www.cnblogs.com/chizizhixin/p/5323638.html
Copyright © 2011-2022 走看看