javaWeb核心技術第十四篇之easyui

網站是分爲網站的前臺和網站的後臺.
        前臺--給用戶看的   例如:商城
        後臺--給管理員看的  例如:商城後臺  目的:用來添加維護數據
    
    BootStrap:jsp 頁面顯示,效果好,美觀,適合做爲用戶界面.
    EasyUI : jsp頁面,快速開發,格式統一,美觀效果通常.
    
    EasyUI裏面有不少組件(功能模塊):有本身的特使,但編寫簡單,只需固定html代碼結構.
    
    EasyUI環境搭建:
        1.導入css , 須要2個css
        2.導入jquery,須要2個js
            <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/easyui.css">
            <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/icon.css">
            <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/demo.css">
            <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
            <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.easyui.min.js"></script>
                
    EasyUI的定義方式:
        easyui規定:咱們只須要提供簡單html代碼結構,就能夠生成特殊的效果.
            easyui的定義方式:
                1.html代碼結構.
                    1.1:須要有class="easyui-*"  *表示組件的名稱.
                    1.2:easyui提供另一個屬性:data-options:裏面能夠寫easyui提供的屬性.
                        data-options格式:json格式:key:value,key:value......
                
                2.js渲染.
                    2.1:語法 : 對象.組件名稱();
                    2.2:語法 : 對象.組件名稱({key:value,key:value.....});
                
                例如:
                    html例子:
                    <div class="easyui-window" data-options="title:'this is 標題',width:200,height:400"></div>
                    
                    js例子:
                    <div id="myDiv"></div>
                    <script>
                        //若是使用js渲染,語法 : 對象.組件名稱({key:value,key:value.....});
                        $("#myDiv").window({
                            title:'這是新的標題',
                            width:400,
                            height:400
                        });
                    </script>    
    Easy--屬性--事件--方法:
        easyui的屬性 : 事件,方法
            屬性 : 組件自身特色,事件和屬性能夠寫在一塊兒,格式:key:value,key:value....
            事件 : (被動)完成某件事情後觸發的動做.
                $(對象).組件名稱({
                    屬性:屬性值,
                    屬性:屬性值,
                    事件:函數
                })
            
            方法:(主動)主動完成某件事件.
            語法:
                $(對象).組件名稱(方法名稱,方法的參數)
                
            <div class="easyui-dialog" data-options="width:200,height:200",onBeforeClose:function(){
                    alert('窗口即將關閉');
            }"></div>
            
            例如:
                <div id="myDiv2"></div>
                <input type="button" value="關閉窗口" onclick="closeDialog()">
                <input type="button" value="打開窗口" onclick="openDialog()">
                //事件
                <script type="text/javascript">
                    $("#myDiv2").dialog({
                        width:200,
                        height:200,
                        onBeforeClose:function(){
                            alert('窗口即將關閉')
                        }
                    });
                
                function closeDialog() {
                    //方法設置的標準語法 : $(對象).組件名稱(方法名稱[,方法的值])
                    $("#myDiv2").dialog("close");
                
                }
                function openDiaLog() {
                    $("#myDiv2").dialog("open");
                }
        </script>
    
    表單:
        默認狀況下,表單是傳統表單,傳統表單同步,easyui的表單是異步的.
        <script>
            $("#ff").from({
                url:"${pageContext.request.contextPath}/DemoServlet",//等效action屬性,表單提交的路徑.
                onSubmit : function() {
                    //在此處能夠作效驗,表單提交前效驗.
                    //alert(1);
                    //return false;
                },
                success:function(data) {
                    //回調函數,此處是沒有判斷狀態碼爲200狀況,之後是須要判斷data值.
                    alert(data)
                }
            });
        </script>
    Tabs:選項卡
        <script>
            function addTabs(){
                var flag = $("#tt").tabs("exists","工資條");
                
                if(flag){
                    //若是面板已經存在,選中該面板
                    $("#tt").tabs("select","工資條");
                }else{
                    //若是面板不存在,添加面板
                    $("#tt").tabs("add",{
                        title : "工資條",  //標題
                        content : "Tab Body",  //內容
                        closable : true  //是否能夠關閉
                        
                    });
                }
                
            }
        </script>
            
    下拉框:
        <input id="cc" name="dept" value="請選擇">
            <script>
                $("#cc").combobox({
                    //能夠加載遠程事件,支持json   easyui都支持json
                    url:"combobox_data.json",
                    valueField : "id", //對應value值,須要將json的key放在此處,  // <option value="">文本</option>
                    textFiedld : "name"  //將要顯示的文本的key放在此處
                    
                });
            </script>
    
    Datagrid:數據表單
        url : 加載遠程的數據,支持json
            表格中的field的字段名稱,必須和json的一致,若是一致,表單將自動填充json數據.
        <table class="easyui-datagrid" data-options="url:'datagrid_data.json',fit:true">
            <thead>
                <tr>
                    <th data-options="field:'id',width:100">編碼</th>
                    <th data-options="field:'name',width:100">名稱</th>
                    <th data-options="field:'age',width:100,align:'right'">價格</th>
                    <th data-options="field:'pimage',width:100,align:'right',formatter:function( value , rows , index){ return '<img src='+value + '>';}">圖片</th>
                </tr>
            </thead>
        </table>
    
    <table id="dg"></table>
        value : 表示當前json的值
        rows : 表示當前行的對象
        index : 表示當前行的索引
    <script>
        $('#dg').datagrid({    
            url:'datagrid_data.json', //url : 加載遠程的數據 支持json     
            columns:[[    
                {field:'id',title:'id',width:100},    
                {field:'name',title:'Name',width:100},    
                {field:'age',title:'age',width:100,align:'right'}, 
                {field:'pimage',title:'pimage',width:100,align:'right',
                    formatter:function(value , rows , index){
                        return  "<img src='"+value+"' style='width:40px'>";
                       }    
                }    
            ]],
            fit:true ,//表格自動填充
            fitColumns:true, //列自動填充
            autoRowHeight:true,//高度填充
            toolbar:[{
                iconCls: 'icon-edit',
                handler: function(){alert('編輯按鈕')}
            },'-',{
                iconCls: 'icon-help',
                handler: function(){alert('幫助按鈕')}
            }],
            singleSelect:true, //只能選擇一個
            pagination:true,//頁面的底部加上分頁條
            pageNumber:1, //默認打開第一頁
            pageSize:5,
            pageList:[5,10,15,20,25,30]
        });  
    </script>
    
    後臺代碼:
        接收的分頁參數:
        響應回去的數據:
        
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            //問題1: 頁面須要傳入 pageSize 和 pageNumber
            //問題2: 響應數據 是什麼? 頁面須要什麼數據來進行分頁
            
            //0.編碼
            request.setCharacterEncoding("utf-8");
            response.setHeader("content-type", "text/html;charset=utf-8");
            //1.得到數據
            String pageNumberStr = request.getParameter("page");
            String pageSizeStr = request.getParameter("rows");
            
            int pageNumber = Integer.valueOf(pageNumberStr);
            int pageSize = Integer.valueOf(pageSizeStr);
            
            //int pageNumber= 1;
            //int pageSize = 5;
            
            //2.處理數據
            ProductService service = new ProductService();
            //List<Product> pList = service.findAll();
            //若是響應回去的只是list 不會進行分頁
            //List<Product> pList = service.findByPage( pageNumber , pageSize);
            EasyUIPageBean<Product> easyUIPageBean = service.findByEasyUIPage( pageNumber , pageSize);
            
            //須要響應的數據{total:28 , "rows" : [ {} , {} ,{} ]}   ==>> 能夠使用map 也能夠封裝對象
            //但目前是           [{key:value,key:value},{key:value,key:value}..]
            
            
            //3.響應
            Gson gson = new Gson();
            String json = gson.toJson(easyUIPageBean);
            System.out.println(json);
            response.getWriter().print(json); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }
相關文章
相關標籤/搜索