zoukankan      html  css  js  c++  java
  • ext整合dwr的小例子

    第一步:写个index.jsp页面。

    <%@ page contentType="text/html;charset=utf-8"%>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>dwr与ext整合</title>
        </head>
        <body>
            <h1>dwr与ext整合</h1>
            <hr>
            <ol>
                <li><a href="1.jsp">无侵入式整合dwr和ext</a></li>
                <li><a href="2.jsp">DWRProxy</a></li>
                <li><a href="3.jsp">DWRTreeLoader</a></li>
                <li><a href="4.jsp">DWRProxy和Combobox</a></li>
            </ol>
        </body>
    </html>

    第二步:分别写出1、2、3、4.jsp.

    1.jsp

    <%@ page contentType="text/html;charset=utf-8"%>
       <%
        String ctx = request.getContextPath();
        //String ext = ctx + "/ext-3.0.0";
        pageContext.setAttribute("ctx", ctx);
       // pageContext.setAttribute("ext", ext);
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>无侵入式整合dwr和ext</title>
            <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
            <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="ext/ext-all.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/interface/infoManager.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
            <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '${ext}/resources/images/default/s.gif';

    Ext.onReady(function(){

        var cm = new Ext.grid.ColumnModel([
            {header:'编号',dataIndex:'id'},
            {header:'名称',dataIndex:'name'},
            {header:'性别',dataIndex:'sex'},
            {header:'邮箱',dataIndex:'email'},
            {header:'电话',dataIndex:'tel'},
            {header:'添加时间',dataIndex:'addTime'},
            {header:'备注',dataIndex:'descn'}
        ]);

        var store = new Ext.data.JsonStore({
            fields: ["id","name","sex",'email','tel','addTime','descn']
        });

        // 调用dwr取得数据
        infoManager.getResult(function(data) {
            store.loadData(data);
        });

        var grid = new Ext.grid.GridPanel({
            renderTo: 'grid',
            autoHeight:true,
            store: store,
            cm: cm
         
        });

    });
            </script>
        </head>
        <body>
            <h1>无侵入式整合dwr和ext</h1>
            <a href="index.jsp">返回</a>
            <hr>
            <div id="grid" style="height:300px;"></div>
        </body>
    </html>

    2.jsp

    <%@ page contentType="text/html;charset=utf-8"%>
    <%
        String ctx = request.getContextPath();
        //String ext = ctx + "/ext-3.0.0";
        pageContext.setAttribute("ctx", ctx);
        //pageContext.setAttribute("ext", ext);
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>DWRProxy</title>
            <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
            <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="ext/ext-all.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/interface/infoManager.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/util.js"></script>
            <script type="text/javascript" src="DWRProxy.js"></script>
            <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '${ext}/resources/images/default/s.gif';

    Ext.onReady(function(){

        var info = Ext.data.Record.create([
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'},
            {name: 'sex', type: 'int'},
            {name: 'email', type: 'string'},
            {name: 'tel', type: 'string'},
            {name: 'addTime'},
            {name: 'descn', type: 'string'}
        ]);

        var cm = new Ext.grid.ColumnModel([
            {header:'编号',dataIndex:'id'},
            {header:'名称',dataIndex:'name'},
            {header:'性别',dataIndex:'sex'},
            {header:'邮箱',dataIndex:'email'},
            {header:'电话',dataIndex:'tel'},
            {header:'添加时间',dataIndex:'addTime'},
            {header:'备注',dataIndex:'descn'}
        ]);

        var store = new Ext.data.Store({
            proxy: new Ext.data.DWRProxy(infoManager.getItems, true),
            reader: new Ext.data.ListRangeReader({
                totalProperty: 'totalSize',
                root: 'data',
                id: 'id'
            }, info),
            remoteSort: true
        });

        var grid = new Ext.grid.GridPanel({
            renderTo: 'grid',
            //autoHeight: true,
            height:500,
            store: store,
            cm: cm,
            bbar: new Ext.PagingToolbar({
                pageSize: 10,
                store: store,
                displayInfo: true,
                displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
                emptyMsg: "没有记录"
            })
        });
        store.load({params:{start:0,limit:10}});

    });
            </script>
        </head>
        <body>
            <h1>DWRProxy</h1>
            <a href="index.jsp">返回</a>
            <hr>
            <div id="grid" style="height:300px;"></div>
        </body>
    </html>

    3.jsp

    <%@ page contentType="text/html;charset=utf-8"%>
    <%
        String ctx = request.getContextPath();
        //String ext = ctx + "/ext-3.0.0";
        pageContext.setAttribute("ctx", ctx);
        //pageContext.setAttribute("ext", ext);
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>DWRTreeLoader</title>
            <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
            <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="ext/ext-all.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/interface/treeNodeManager.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/util.js"></script>
            <script type="text/javascript" src="DWRTreeLoader.js"></script>
            <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '${ext}/resources/images/default/s.gif';

    Ext.onReady(function(){

        var tree = new Ext.tree.TreePanel({
            el: 'tree',
            loader: new Ext.tree.DWRTreeLoader({dataUrl: treeNodeManager.getTree})
        });

        var root = new Ext.tree.AsyncTreeNode({
            id: '0',
            text:'偶是根'
        });

        tree.setRootNode(root);
        tree.render();

        root.expand();

    });
            </script>
        </head>
        <body>
            <h1>DWRTreeLoader</h1>
            <a href="index.jsp">返回</a>
            <hr>
            <div id="tree" style="height:300px;"></div>
        </body>
    </html>

    4.jsp

    <%@ page contentType="text/html;charset=utf-8"%>
    <%
        String ctx = request.getContextPath();
        //String ext = ctx + "/ext-3.0.0";
        pageContext.setAttribute("ctx", ctx);
        //pageContext.setAttribute("ext", ext);
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>DWRProxy和ComboBox</title>
            <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
            <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="ext/ext-all.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/interface/infoManager.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
            <script type="text/javascript" src="${ctx}/dwr/util.js"></script>
            <script type="text/javascript" src="DWRProxy.js"></script>
            <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '${ext}/resources/images/default/s.gif';

    Ext.onReady(function() {

        var info = Ext.data.Record.create([
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'}
        ]);

        var store = new Ext.data.Store({
            proxy: new Ext.data.DWRProxy(infoManager.getItems, true),
            reader: new Ext.data.ListRangeReader({
                totalProperty: 'totalSize',
                root: 'data',
                id: 'id'
            }, info)
        });

        var combo = new Ext.form.ComboBox({
            store: store,
            displayField: 'name',
            valueField: 'id',
            triggerAction: 'all',
            typeAhead: true,
            mode: 'remote',
            emptyText: '请选择',
            selectOnFocus: true
        });
        combo.render('combo');

    });
            </script>
        </head>
        <body>
            <h1>DWRProxy和ComboBox</h1>
            <a href="index.jsp">返回</a>
            <hr>
            <div id="combo" style="height:300px;"></div>
        </body>
    </html>

    第三步:

    public class Info { //实体类s
        private long id;
        private String name;
        private int sex;
        private String email;
        private String tel;
        private Date addTime;
        private String descn;

    加上get和set方法。

    package dwr;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;

    public class InfoManager {
        private List infoList = new ArrayList();
        public InfoManager() {
            for (int i = 0; i < 30; i++) {
                Info info = new Info();
                info.setId(i);
                info.setName("name " + i);
                info.setSex(i%2);
                info.setEmail("xyz20003@gmail.com");
                info.setTel("" + i);
                info.setAddTime(new Date());
                info.setDescn("descn " + i);

                infoList.add(info);
            }
        }

        public List getResult() {
            return infoList;
        }

        public ListRange getItems(Map conditions) {
            int start = 0;
            int pageSize = 10;
            // int pageNo = (start / pageSize) + 1;

            try {
                start = Integer.parseInt(conditions.get("start").toString());
                pageSize = Integer.parseInt(conditions.get("limit").toString());
                // pageNo = (start / pageSize) + 1;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            int end = start + pageSize;
            if (end > infoList.size()) {
                end = infoList.size();
            }
            List list = infoList.subList(start, end);
            return new ListRange(list.toArray(), infoList.size());
        }

    }

    package dwr;

    import java.io.Serializable;
    public class ListRange implements Serializable {
        private Object[] data;
        private int totalSize;

        public ListRange(Object[] data, int totalSize) {
            this.data = data;
            this.totalSize = totalSize;
        }

        public Object[] getData() {
            return data;
        }
        public void setData(Object[] data) {
            this.data = data;
        }

        public int getTotalSize() {
            return totalSize;
        }
        public void setTotalSize(int totalSize) {
            this.totalSize = totalSize;
        }
    }

    public class TreeNode {
        private String id;
        private String text;
        private boolean leaf;

        public TreeNode() {
        }

        public TreeNode(String id, String text, boolean leaf) {
            this.id = id;
            this.text = text;
            this.leaf = leaf;
        }

    加上getset方法

    package dwr;
    import java.util.List;
    import java.util.ArrayList;

    public class TreeNodeManager {

        public List getTree(String id) {
            List list = new ArrayList();
            String seed1 = id + 1;
            String seed2 = id + 2;
            String seed3 = id + 3;
            list.add(new TreeNode(seed1, "" + seed1, false));
            list.add(new TreeNode(seed2, "" + seed2, false));
            list.add(new TreeNode(seed3, "" + seed3, true));
            return list;
        }
    }

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr>
        <allow>
            <create creator="new" javascript="infoManager">
                <param name="class" value="dwr.InfoManager"/>
                <include method="getResult"/>
                <include method="getItems"/>
            </create>
            <create creator="new" javascript="treeNodeManager">
                <param name="class" value="dwr.TreeNodeManager"/>
                <include method="getTree"/>
            </create>
            <convert converter="bean" match="dwr.Info"/>
            <convert converter="bean" match="dwr.ListRange"/>
            <convert converter="bean" match="dwr.TreeNode"/>
        </allow>
    </dwr>

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app  xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

        <servlet>
            <servlet-name>dwr-invoker</servlet-name>
            <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
            </init-param>
        </servlet>

        <servlet-mapping>
            <servlet-name>dwr-invoker</servlet-name>
            <url-pattern>/dwr/*</url-pattern>
        </servlet-mapping>

    </web-app>

  • 相关阅读:
    putty的复制 技巧
    linux下的yum命令详解
    mysql修改密码
    我的阅读编程书籍的好方法
    WINDOWS下VIM配置
    Debian下VSFTPD配置
    一个远程访问MySQL的错误(2003, 10061)的解决
    auto_increment
    hello,world!
    scss文件中使用深度选择器/deep/报错 Expected selector Jim
  • 原文地址:https://www.cnblogs.com/kunpengit/p/2277733.html
Copyright © 2011-2022 走看看