ajax+json+servlet实现表格的基本功能

最近用jquery写了一个插件,感觉挺有用的,于是记录下来分享给在IT路上奔跑的程序猿,好跟不好另外说,如果觉得好的话就拿去。好了不bb了。
这个插件是链接数据库采用了DAO的设计模式,前台只用两三行的代码就可以将一个表格的基本功能给实现(增删改查,ajax分页,模糊搜索,还有就是每页 显示的记录数),参数的话只要给一个serlvet地址就可以了,数据的发送则采用了json格式。后台的servlet要自己编写,代码也不是很多。
前台代码:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/test01.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#Tab").baseFn({url: "AdminServelt08"});
});
</script>
</head>
<body>
    <div id="Tab"></div>
</body>
</html>

后台代码:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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 org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import vo.Admin;
import factory.ServiceFactory;

@WebServlet("/AdminServelt08")
public class AdminServelt08 extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public AdminServelt08() {
        super();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=GBK");
        PrintWriter out = response.getWriter();
        List<Admin> all = new ArrayList<Admin>();
        String req = request.getParameter("send");
        if ("read".equals(req)) {
            try {
                String start = request.getParameter("start");
                String size = request.getParameter("size");
                String keyWord = request.getParameter("kw");
                //System.out.println(start + "-" + size);
                if (keyWord != null) {
                    all = ServiceFactory.getAdminServiceInstance().findAll(keyWord);
                }
                else if (start != null && size != null) {
                    all = ServiceFactory.getAdminServiceInstance().pagination(Integer.parseInt(start), Integer.parseInt(size));
                } else {
                    all = ServiceFactory.getAdminServiceInstance().pagination(0, 5);
                }
                    Integer allCount = ServiceFactory.getAdminServiceInstance().findAll("").size();
                    Admin admin = null;
                    String str = "{\"allCount\":\"" + allCount + "\",";
                     str += "\"admin\":[";
                    for (int i=0; i<all.size(); i++) {
                        str = str + "{";
                        admin = new Admin();
                        admin = all.get(i);
                        str = str + "\"adId\":\"" + admin.getAdid() + "\",";
                        str = str + "\"adName\":\"" + admin.getAdname() + "\",";
                        str = str + "\"adPass\":\"" + admin.getAdpass() + "\",";
                        str = str + "\"adPhone\":\"" + admin.getAdphone() + "\",";
                        str = str + "\"adEmail\":\"" + admin.getAdemail() + "\",";
                        str = str + "\"adQQ\":\"" + admin.getAdqq() + "\"";
                        str = str + "},";
                    }
                    str = str.substring(0, str.length()-1);
                    str = str + "]}";
                    out.print(str);
                    out.close();
                //  System.out.println(str);

            } catch (Exception e) {
                    e.printStackTrace();
            }

        }

        else if ("insert".equals(req)) {
            String data = request.getParameter("addData");
            try {
                JSONArray ja = new JSONArray(data);
                JSONObject jo = null;
                Admin admin = new Admin();
                for (int i=0; i<ja.length(); i++) {
                    jo = new JSONObject();
                    admin.setAdid(ja.getJSONObject(0).getInt("adId"));
                    admin.setAdname(ja.getJSONObject(1).getString("adName"));
                    admin.setAdpass(ja.getJSONObject(2).getString("adPass"));
                    admin.setAdphone(ja.getJSONObject(3).getString("adPhone"));
                    admin.setAdemail(ja.getJSONObject(4).getString("adEmail"));
                    admin.setAdqq(ja.getJSONObject(5).getString("adQQ"));
                }

                if (ServiceFactory.getAdminServiceInstance().doCreate(admin)) {
                    out.print("[{\"success\":\"true\"}]");
                } else {
                    out.print("[{\"success\":\"false\"}]");
                }
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        else if ("update".equals(req)) {
            String data = request.getParameter("updateData");
            try {
                JSONArray ja = new JSONArray(data);
                JSONObject jo = null;
                Admin admin = new Admin();
                for (int i=0; i<ja.length(); i++) {
                    jo = new JSONObject();
                    admin.setAdid(ja.getJSONObject(0).getInt("adId"));
                    admin.setAdname(ja.getJSONObject(1).getString("adName"));
                    admin.setAdpass(ja.getJSONObject(2).getString("adPass"));
                    admin.setAdphone(ja.getJSONObject(3).getString("adPhone"));
                    admin.setAdemail(ja.getJSONObject(4).getString("adEmail"));
                    admin.setAdqq(ja.getJSONObject(5).getString("adQQ"));
                }
                if (ServiceFactory.getAdminServiceInstance().doUpdate(admin)) {
                    out.print("[{\"success\":\"true\"}]");
                } else {
                    out.print("[{\"success\":\"false\"}]");
                }
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        else if ("delete".equals(req)){
            String data = request.getParameter("delData");
            String [] ids = data.split(",");
            boolean flag = false;
            for (int i=0; i<ids.length; i++) {
                try {
                    if (ServiceFactory.getAdminServiceInstance().doDelete(Integer.parseInt(ids[i]))) {
                        flag = true;
                    }
                } catch (NumberFormatException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (flag) {
                out.print("[{\"success\":\"true\"}]");
            }
            else {
                out.print("[{\"success\":\"false\"}]");
            }

        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

}

js插件:

(function($){
    var this_id = "";
    var serlvletUrl = "";
    $.fn.baseFn = function(options) { 
        //获取id的名字
        this.each(function () { this_id = $(this).attr("id"); });
        //设置默认值
          var defaults = {    
            url: "",
          };    
        // Extend our default options with those provided.    
          var opts = $.extend(defaults, options);    
          servletUrl = opts.url;
          initpage();
    }; 

    //初始化页面 
    function initpage() {
    $.ajax({ type:"post", url:servletUrl, data:{send:"read"}, dataType:"json", success:function(rdata) { var currentPage = 1; var pageSize = 5; initTab(rdata, currentPage, pageSize); } });
    }
    //***表格初始化******************************************************
    function initTab(rdata, currentPage, pageSize) {
        var tab = "<table border=1 width=800 cellpadding=0 id=adminTab>";
        var count = 0;
        $(rdata.admin).each(function(index, item) { //这里的each是每一个amind对象 if (index == 0) { //构建表头 tab = tab + "<tr align=center id=h>"; tab = tab + "<td><input type=checkbox id=checkall />checkall</td>"; for (var i in item) { tab = tab + "<td>" + i + "</td>"; count++; } tab = tab + "</tr>"; } tab = tab + "<tr align=center>"; tab = tab + "<td><input type=checkbox />&nbsp</td>"; for (var i in item) { tab = tab + "<td>" + item[i] + "</td>"; } tab = tab + "</tr>"; });
        tab = tab + "<tr align=center><td colspan=" + (count+1) +">";
        tab += "currentPage<input type=text id=pn size=5 />";
        tab += "<input type=button value=GO id=jump />";
        tab += "<input type=button value=prePage class=prePage  />";
        tab += "<input type=button value=nextPage class=nextPage  />";
        tab += "show <input type=text id=pageSize size=5 />records&nbsp;&nbsp;";
        tab += "there are " + rdata.allCount +" records/" + Math.ceil(rdata.allCount / pageSize) +"pages";
        tab += "</td></tr>";
        tab = tab + "</table>";
        $("#" + this_id).html(tab);
        //添加功能按钮 
        var ta="";
        ta += "<tr align=center><td colspan=" + (count+1) + ">";
        ta += "<input type=button value=add class=create />";
        ta += "<input type=button value=update class=update />";
        ta += "<input type=button value=delete class=delete />";
        ta += "search by adName <input type=text id=search /><input type=button class=search value=search />";
        ta += "</td></tr>";
        $("#h").before(ta);//before:在什么之前添加
        //全选按钮 
        $("#checkall").click(function() { if ( $(this).attr("checked") ) { $("input:checkbox").attr("checked", true); } else { $("input:checkbox").attr("checked", false); } });
        //点击add按钮 
        $(".create").click(function () { createTable(rdata); });
        //点击uddate按钮 
        $(".update").click(function () { updateTab(rdata); });
        //点击delete按钮
        $(".delete").click(function () { deleteTab(); });
        //点击搜索 
        $(".search").click(function () { var keyword = $("#search").val(); search(keyword); });
        //点击跳转
        $("#jump").click(function () { var pageNum = $("#pn").val(); if (pageNum > 0 && pageNum <= Math.ceil(rdata.allCount / 5)) { gotopage(pageNum, pageSize); } else { alert("input error!"); } });
        //上一页
        $(".prePage").click(function () { currentPage--; var pageNum = currentPage; if (pageNum == 0) { $(".prePage").attr({"disabled":"disabled"}); return; } else { gotopage(pageNum, pageSize); } });
        //下 一页 
        $(".nextPage").click(function () { currentPage++; var total = rdata.allCount; var pageNum = currentPage; if (pageNum == (Math.ceil(total / 5)+1)) { $(".nextPage").attr({"disabled":"disabled"}); return; } else { gotopage(pageNum, pageSize); } });
        //每页显示的记录 
        $("#pageSize").blur(function () { currentPage = 1; pageSize = $("#pageSize").val(); gotopage(currentPage, pageSize); });
        $("#pn").val(currentPage);
        $("#pageSize").val(pageSize);
    }
    //添加操作 ********************************************************
    function createTable(rdata) {
    $("#adminTab").after("<div id=zhezao></div>");
    shade();
    var createtab = "<table width=300 border=1 cellpadding=0 id=addtotab>";
    var createtab = createtab + "<tr><td colspan=2 align=center>Add Please</td></tr>";
    $(rdata.admin).each(function(index,item) { for (var i in item) { if (index == 0) { createtab = createtab + "<tr><td>" + i + "</td>"; createtab = createtab + "<td><input type=text id=" + i + " /></td></tr>"; } } });
    createtab = createtab + "<tr><td colspan=2 align=center><input type=button value=submit class=ok /><input type=button value=reset class=cancle /></td></tr>";
    createtab = createtab + "</table>";
    $("#zhezao").after(createtab);
    $("#addtotab").css({"display":"", "position":"fixed", "background":"#fff", "z-index":1001, "left":$(window).width()/2-150, "top":$(window).height()/2-150 });
    //点击reset按钮 
    $(".cancle").click(function() { $("#addtotab").remove(); $("#zhezao").remove(); });
    //点击submit按钮之后对数据进行json封装 
    $(".ok").click(function() { var str = "["; $(rdata.admin).each(function(index,item) { if (index == 0) { for (var i in item) { str = str + "{\"" + i + "\":\"" + $("#"+i).val() + "\"},"; } str = str.substring(0,str.length-1); str = str + "]"; } }); //发送添加数据 $.ajax({ type:"post", url:servletUrl, data:{send:"insert",addData:str}, dataType:"json", success:function(getdata) { if (getdata[0]["success"] == "true") { alert("add successful!"); initpage(); } else { alert("add false"); } $("#addtotab").remove(); $("#zhezao").remove(); } }); });

    }

    //update操作 ************************************************************
    function updateTab(rdata) {
    var len = $("input:not('#checkall'):checked").length;
    if (len == 0) {
        alert("please select one to update");
    }
    else if (len > 1){
        alert("update only one!")
    }
    else {
        $("#adminTab").after("<div id=zhezao></div>");
        shade();
        var createtab = "<table width=300 border=1 cellpadding=0 id=addtotab>";
        var createtab = createtab + "<tr><td colspan=2 align=center>Update Please</td></tr>";
        $(rdata.admin).each(function(index,item) { var isId = true; for (var i in item) { if (index == 0) { if (isId) { isId = false; createtab = createtab + "<tr><td>" + i + "</td>"; createtab = createtab + "<td><input type=text disabled=disabled id=" + i + " /></td></tr>"; continue; } createtab = createtab + "<tr><td>" + i + "</td>"; createtab = createtab + "<td><input type=text id=" + i + " /></td></tr>"; } } });
        createtab = createtab + "<tr><td colspan=2 align=center><input type=button value=submit class=ok /><input type=button value=reset class=cancle /></td></tr>";
        createtab = createtab + "</table>";
        $("#zhezao").after(createtab);
        $("#addtotab").css({"display":"", "position":"fixed", "background":"#fff", "z-index":1001, "left":$(window).width()/2-150, "top":$(window).height()/2-150 });
        //点击reset按钮 
        $(".cancle").click(function() { $("#addtotab").remove(); $("#zhezao").remove(); });
        $(rdata.admin).each(function(index,item) { if (index == 0) { var cnt = 1; for (var i in item) { var updateVal = $("input:not('#checkall'):checked").parent().parent().children("td:eq(" + cnt + ")").text(); $("#"+i).attr("value",updateVal); cnt++; } } });
        $(".ok").click(function() { var updatestr = "["; $(rdata.admin).each(function(index, item) { if (index == 0) { for (var i in item) { updatestr = updatestr + "{\"" + i + "\":\"" + $("#"+i).val() + "\"},"; } updatestr = updatestr.substring(0,updatestr.length-1); updatestr = updatestr + "]"; } }); //发送更新数据 $.ajax({ type:"post", url:servletUrl, data:{send:"update", updateData:updatestr}, dataType:"json", success:function(getda) { if (getda[0]["success"] == "true") { alert("update successful"); initpage(); } else { alert("update fail"); } $("#addtotab").remove(); $("#zhezao").remove(); } }); });

    }
    }
    //delete操作**********************************************************************
    function deleteTab() {
    var len = $("input:not('#checkall'):checked").length;
    if (len == 0) {
        alert("please select one or more");
    } 
    else {
        if (confirm("Do you want to delete?")) { var delstr = ""; $("input:not('checkall'):checked").each(function(index, item) { delstr = delstr + $(this).parent().parent().children("td:eq(1)").text() + ","; }); delstr = delstr.substring(0,delstr.length-1); $.ajax({ type:"post", url:servletUrl, data:{send:"delete", delData:delstr}, dataType:"json", success:function(getdata) { if (getdata[0]["success"] == "true") { alert("delete successful"); initpage(); } else { alert("delete fail"); } } }); }
    }
    }
    //search**************************************************
    function search(keyword) {
        $.ajax({ url : servletUrl, data:{send:"read", kw:keyword}, cache : false, type : "POST", dataType : "json", success : function (result){ // alert(typeof(result)); initTab(result,0,5); } });
    }

    //遮罩开始 
    function shade() {
                var winw = $(window).width();
                var winh = $(window).height();
                $("#zhezao").css({"display":"", "position":"fixed", "background":"#000", "z-index":1000, "-moz-opacity":"0.5", "opacity":".50", "filter":"alpha(opacity=50)", "left":0, "top":0, "width":winw, "height":winh });
    }//遮罩结束 
    //发送分页的数据 ************************************************* 
    function gotopage(pageNum,pageSize) {
        var startPoint = (pageNum-1) * pageSize;
        $.ajax({ type:"post", url:servletUrl, data:{send:"read",start:startPoint,size:pageSize}, dataType:"json", success:function(data) { initTab(data, pageNum, pageSize); } });
    }
})(jQuery); 

效果图:
初始化页面

添加操作:
添加

模糊查询:
这里写图片描述

显示记录数:
这里写图片描述
这里写图片描述

好了,文章写到这里,这是我第一篇文章,写得有点粗糙,代码呢也写得有点粗糙,还请见谅!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值