使用EasyUI開發銀行業績統計系統[21]-選單管理的Code On

else發表於2021-09-09

一,簡介

角色管理和選單管理的業務邏輯基本是一模一樣的,無非增刪改查而已,貓哥直接講述如何利用複製-貼上的方式完成選單管理功能的開發。

注意:本篇採用一種意識流的開發手段,即直接一頓狂編碼,最後直接測試,如果邏輯能力夠強大的的話,應該直接一遍測試就透過。

在唱片界,這叫做One Take,林志炫老師很愛這個。在程式碼界,我們叫做Code Once!

二,大體過程

涉及到需要新建的檔案:

1,menu_manage.jsp,選單管理網頁,參照role_manage.jsp修改即可
2,menu_manage.jsp.js,網頁呼叫的js指令碼,參照role_manage.jsp.js修改即可。
3,MenuServlet.java,服務端元件,參照RoleServlet.java修改即可。
4,MenuService.java,資料服務元件,參照RoleService.java修改即可哦。

三,選單管理網頁

注意需要修改的地方貓哥已經新增註釋。

<!-- 新建檔案menu_manage.jsp --&gt



  
選單管理
<!-- 角色改為選單 --&gt

<!--角色列表改為選單列表;RoleServlet改為MenuServlet--&gt <!-- 按照資料庫中menu表的結構修改即可 --&gt
選單編號 選單名稱 選單url
<!-- 工具欄;方法所屬物件改為menu_manage --&gt
<!--詳情對話方塊 --&gt
詳細資訊
<!-- 按照資料庫中menu表的結構修改即可 --&gt
<!--方法所屬物件改為menu_manage --&gt

四,js指令碼修改

//在script資料夾下新建menu_manage.jsp.js,並複製role_manage.jsp.js中的程式碼後進行修改
var menu_manage_function=function(){//將role_manage_function改為menu_manage_function
    this.CreateOne=function(){
        $('#uiDialog').dialog('open').dialog('setTitle','新增');
        $('#formInfo').form('clear');
        url = '/BankStatistics/MenuServlet?method=createOne&ran='+Math.random();//RoleServlet改為MenuServlet
    };
    this.EditOne=function(){
        var row = $('#uiGrid').datagrid('getSelected');
        if (row){
            $('#uiDialog').dialog('open').dialog('setTitle','編輯');
            $('#formInfo').form('load',row);
            //RoleServlet改為MenuServlet;role_id改為menu_id
            url = '/BankStatistics/MenuServlet?method=editOne&id='+row.menu_id+'&ran='+Math.random();
        }
    };
    this.SaveOne=function(){
        $('#formInfo').form('submit',{
            url: url,
            onSubmit: function(){
                return $(this).form('validate');
            },
            success: function(result){
                var result = eval('('+result+')');
                if (result.success===false){
                    $.messager.show({
                        title: 'Error',
                        msg: result.errorMsg
                    });
                } else {
                    $('#uiDialog').dialog('close');     
                    $('#uiGrid').datagrid('reload');    
                }
            }
        });
    };
    this.DeleteOne=function(){
        var row = $('#uiGrid').datagrid('getSelected');
        if (row){
            $.messager.confirm('確認','確定刪除選中項?',function(r){
                if (r){
                        //RoleServlet改為MenuServlet;role_id改為menu_id
                        $.post('/BankStatistics/MenuServlet?method=deleteOne&ran='+Math.random()
                            ,{id:row.menu_id},
                            function(result){
                                if (result.success===true){
                                    $('#uiGrid').datagrid('reload');    
                                } 
                                else {
                                    $.messager.show({   
                                        title: 'Error',
                                        msg: '刪除錯誤'
                                    });
                                }//ifelse
                            }//functoon
                            ,'json'
                        );//post
                }//if(r)
            });//messager.confirm
        }//if(row)
    };
};
//role_manage_function改為menu_manage_function;role_manage改為menu_manage
var menu_manage=new menu_manage_function();

五,Servlet和Service修改

這兩個修改比較簡單,自行比照上一篇文章即可。

package panda.bank.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import panda.bank.entity.Menu;
import panda.bank.service.MenuService;
import net.sf.json.JSONObject;
@WebServlet(urlPatterns="/MenuServlet")
public class MenuServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String method=request.getParameter("method");
        MenuService service=new MenuService(Menu.class);
        //獲取列表
        if(method.equals("list")){
            int page,rows,offset,total;
            String i_page=request.getParameter("page");
            if(i_page==null)
                page=1;
            else
                page=Integer.parseInt(i_page);
            String i_rows=request.getParameter("rows");
            if(i_rows==null)
                rows=10;
            else
                rows=Integer.parseInt(i_rows);
            offset=(page-1)*rows;
            total=service.getTotalCount();
            List roles=service.getPage(offset, rows);

            Map jsonMap = new HashMap();//定義map  
            jsonMap.put("total", total);//total鍵 存放總記錄數,必須的  
            jsonMap.put("rows", roles);//rows鍵 存放每頁記錄 list  
            String result = JSONObject.fromObject(jsonMap).toString();//格式化result   一定要是JSONObject  
            out.print(result);
        }
        else if(method.equals("createOne")){
            Menu one=new Menu();
            one.setMenu_name(request.getParameter("menu_name"));
            one.setMenu_url(request.getParameter("menu_url"));
            service.add(one);
            out.print("{"success":true}");
        }   
        else if(method.equals("editOne")){
            String id=request.getParameter("id");
            Menu one=service.getByMenuId(id);
            one.setMenu_name(request.getParameter("menu_name"));
            one.setMenu_url(request.getParameter("menu_url"));
            service.update(one);
            out.print("{"success":true}");
        }   
        else if(method.equals("deleteOne")){
            String id=request.getParameter("id");
            service.delete(id);
            out.print("{"success":true}");
        }   
        out.flush();
        out.close();
    }
}

package panda.bank.service;
import java.util.List;

import panda.bank.entity.Menu;
public class MenuService extends Service{
    public MenuService(Class entityClass) {
        super(entityClass);
    }
    public int getTotalCount(){
        return operation.selectCount();
    }

    public List getPage(int offset,int rows){
        return operation.selectPage(offset, rows);
    }

    public Menu getByMenuId(String id){
        return (Menu)operation.selectOne(id);
    }

    public int add(Menu one){
        return operation.add(one);
    }

    public int update(Menu one){
        return operation.update(one);
    }

    public int delete(String key){
        return operation.delete(key);
    }
}

六,測試和總結

重新 部署、執行Tomcat,選單的增、刪、改、查、分頁一切正常,Code Once實現,成就感滿滿!

經過這兩個案例,以後針對單表操作的功能,一筆帶過,畢竟很簡單,演示已經很充分了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2807800/,如需轉載,請註明出處,否則將追究法律責任。

相關文章