多条件查询无刷新分页

来源:互联网 发布:js中数组map方法 编辑:程序博客网 时间:2024/05/13 22:08

1 此篇博文是在上篇博文“无刷新分页技术 ”的基础上增加了多条件查询功能
2、实现的功能:在main.jsp中分页显示用户信息,输入多个查询条件后分页显示查询出的结果
这里写图片描述
3 、使用到的工具及环境:
2.1:分页框架:pagination
2.11:需要用到的文件:
【jquery.pagination.js】【pagination.css】
2.2:时间控件:datepicker
2.2.1:需要用到的文件:
2.2.1.1:日期控件必须的css
【1】jquery.ui.core.css
【2】jquery.ui.theme.css
【3】jquery.ui.datepicker.css【显示更小】 或者
jquery.ui.datepicker.min.css【显示更大】
2.2.1.2:日期控件必须的js :
【1】jquery-ui.js
【2】jquery.ui.datepicker.js
2.3:json工具:
【1】json2.js
【2】fastjson-1.1.26-sources.jar
【3】 fastjson-1.1.26.jar
4、实现代码
4.1 main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ include file="/WEB-INF/page/common/common.jsp" %><!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=UTF-8"><title>图书商城首页</title><script type="text/javascript" src="${basePath }js/jquery/jquery-1.7.2.min.js"></script><!-- 日期控件必须的css 【1】jquery.ui.core.css 【2】jquery.ui.theme.css 【3】jquery.ui.datepicker.css【显示更小】 jquery.ui.datepicker.min.css【显示更大】 --><link rel="stylesheet" href="${basePath }js/jquery/themes/base/jquery.ui.core.css"><link rel="stylesheet" href="${basePath }js/jquery/themes/base/jquery.ui.theme.css"><!-- 日期控件必须的js :【1】jquery-ui.js 【2】jquery.ui.datepicker.js--><script type="text/javascript" src="${basePath}js/jquery/jquery-ui.js"></script><link rel="stylesheet" href="${basePath }js/jquery/themes/base/jquery.ui.datepicker.css"><link rel="stylesheet" href="${basePath}js/common/page/pagination.css" /><script type="text/javascript" src="${basePath}js/common/page/jquery.pagination.js"></script><script type="text/javascript" src="${basePath}js/jquery/js/datepicker/jquery.ui.datepicker.js"></script><script type="text/javascript" src="${basePath}js/json2.js"></script><script type="text/javascript">var pageIndex = 0;     //页面索引初始值  var pageSize = 3;     //每页显示条数初始化,修改显示条数,修改这里即可 var searchReq=[];     //将页面查询条件定义为一个对象数组【格式[{}]】(push方法添加对象到数组中)$(document).ready(function(){    InitTable(0,searchReq);     $("#startQueryDate").datepicker(            {                /* 区域化周名为中文 */                   dayNamesMin : ["日", "一", "二", "三", "四", "五", "六"],                     /* 每周从周一开始 */                   firstDay : 1,                   /* 区域化月名为中文习惯 */                   monthNames : ["1月", "2月", "3月", "4月", "5月", "6月",                              "7月", "8月", "9月", "10月", "11月", "12月"],                   /* 月份显示在年后面 */                   showMonthAfterYear : true,                   /* 年份后缀字符 */                   yearSuffix : "年",                   /* 格式化中文日期                   (因为月份中已经包含“月”字,所以这里省略) */                   //dateFormat : "yy年MMdd日",                 dateFormat: "yy-mm-dd",              onSelect: function(dateText)              {                   setDateRange(dateText);              }            });    $("#endQueryDate").datepicker(           {              /* 区域化周名为中文 */                   dayNamesMin : ["日", "一", "二", "三", "四", "五", "六"],                     /* 每周从周一开始 */                   firstDay : 1,                   /* 区域化月名为中文习惯 */                   monthNames : ["1月", "2月", "3月", "4月", "5月", "6月",                              "7月", "8月", "9月", "10月", "11月", "12月"],                   /* 月份显示在年后面 */                   showMonthAfterYear : true,                   /* 年份后缀字符 */                   yearSuffix : "年",                   /* 格式化中文日期                   (因为月份中已经包含“月”字,所以这里省略) */                   //dateFormat : "yy年MMdd日",                 dateFormat: "yy-mm-dd",                 clearStatus: '清除已选日期',                   closeText: '关闭',                 beforeShow : function(input)                 {                    if (null != $("#startQueryDate").val() && '' != $("#startQueryDate").val())                    {                        setDateRange($("#startQueryDate").val());                    }                    else                    {                        $("#endQueryDate").datepicker('option', 'maxDate', null);                        $("#endQueryDate").datepicker('option', 'minDate', null);                    }                 }           });    /**     * 设定endQueryDate的最大日期和最小日期;     */     function setDateRange(dateStr)     {        //将字符串转换成Date类型;【我不知道这个toDate()方法是哪里的,这里好像没用】        //var date = dateStr.toDate();        var date = new Date(dateStr);        //只允许查询往后一个星期内的记录;        var month = date.getMonth();        var showDate = date.getDate() + 6;        //创建最大日期;        var maxDate = new Date(date.getFullYear(), month, showDate);        //设为maxDate:endQueryDate的日期最小是maxDate,最大是maxDate(比startQueryDate多6天)        //$("#endQueryDate").datepicker('option', 'maxDate', maxDate);        //设为null:endQueryDate的日期最小是maxDate,最大日期无限制        $("#endQueryDate").datepicker('option', 'maxDate', null);        $("#endQueryDate").datepicker('option', 'minDate', date);     }});//Load事件,初始化表格数据,页面索引为0(第一页)          //翻页调用          function PageCallback(index, jq) {                         InitTable(index,searchReq);          }          //请求数据          function InitTable(pageIndex,searchReq) {             //PageCount是总的记录数            var jsonStr = JSON.stringify(searchReq);            var PageCount="";             var str="";            $.ajax({                   type: "POST",                  //不要加这句,加了的话,后台获取的pageIndex、pageSize、jsonStr都为空                //contentType: "application/json",                url: "${basePath }UserServlet?method=showusers&jsonStr="+jsonStr,      //提交到一般处理程序请求数据                  async:false,                data:{pageIndex:pageIndex+1,pageSize:pageSize},          //提交两个参数:pageIndex(页面索引),pageSize(显示条数)                                  dataType: "json",                //complete:function(){$("#Pagination").show();},//接收数据完毕                 success: function(data) {                      PageCount=data.PageCount;                    var UserList=data.userList;                    $.each(UserList,function(i,n)                    {                        str+="<tr><td>"+n.userid+"</td><td>"+n.usertype+"</td><td>"+n.loginname+"</td><td>"+n.staticpassword+"</td></tr>";                    });                    //下面这行必须加上,移除原来的数据,不然所有数据会叠加在一起                    $("#Result tr:gt(0)").remove();        //移除Id为Result的表格里的行,从第二行开始(这里根据页面布局不同页变)                      $("#Result").append(str);             //将返回的数据追加到表格                  }              });           //分页,PageCount是总条目数,这是必选参数,其它参数都是可选        if(PageCount!=0)        {        $("#Pagination").pagination(PageCount, {          callback: PageCallback,          prev_text: '上一页',       //上一页按钮里text          next_text: '下一页',       //下一页按钮里text          items_per_page: pageSize,  //显示条数          num_display_entries: 6,    //连续分页主体部分分页条目数          current_page: pageIndex,   //当前页索引          num_edge_entries: 2        //两侧首尾分页条目数          });             }         }         function selectedDate(){            if($("#startQueryDate").val() != null || $("#endQueryDate").val() != null){                $(".chartForm input[name=time]").attr('checked', false);            }        };        //清空查询条件        var resetForm=function(){            $("#startQueryDate").attr("value",'');            $("#endQueryDate").attr("value",'');            $("#loginname").val('');            $("#userid").val('');            $("#staticpassword").val('');         };         //做分页查询        function doSearch()        {            var userid=$("#userid").val();            var startQueryDate=$("#startQueryDate").val();            var endQueryDate=$("#endQueryDate").val();            var staticpassword=$("#staticpassword").val();            var loginname=$("#loginname").val();            var searchcondition=            {                    "userid":userid,                    "startQueryDate":startQueryDate,                    "endQueryDate":endQueryDate,                    "staticpassword":staticpassword,                    "loginname":loginname            }            searchReq.push(searchcondition);            InitTable(0,searchReq);        }</script></head><body>    <div id="rig"> <table align="center"> <tr> <td>创建时间: </td> <td><input name="startQueryDate" type="text" class="input_85" id="startQueryDate"  readonly="readonly"/>-<input name="endQueryDate" type="text" class="input_85" id="endQueryDate"  readonly="readonly"/></td> <td>用户昵称:</td><td><input type="text" name="loginname" id="loginname" /></td></tr> <tr> <td>用户ID:</td> <td><input id="userid" name="userid" type="text"/></td> <td>用户密码:</td> <td><input type="text" id="staticpassword" name="staticpassword"/><br/></td> </tr> <tr><td><input type="button" value="搜索" onclick="doSearch();"/></td><td><input type="button" value="清空" onclick="resetForm();"/></td></tr> </table> </div> <div id="container">       <table id="Result" cellspacing="0" cellpadding="0" border="1" align="center">                        <tr>                  <th>userid</th>                  <th>usertype</th>                <th>loginname</th>                  <th>staticpassword</th>                           </tr>     </table>  <div id="Pagination" class="scott" ></div></div>  </body></html>

4.2 UserServlet.java

public String showusers(HttpServletRequest request,HttpServletResponse response)            throws ServletException,IOException{        String pageIndex=request.getParameter("pageIndex");        String pageSize=request.getParameter("pageSize");        String jsonStr=request.getParameter("jsonStr");        System.out.println(jsonStr);        String userid=null;        String startQueryDate=null;        String endQueryDate=null;        String staticpassword=null;        String loginname=null;        // 将前台传来的JSON数据转换成对象,并保存        try         {             //1将json数据转换成List<Map>            if(!StringUtils.isEmpty(jsonStr))            {                List<Map> jsonStrMap=(List<Map>)MyJsonUtil.fromJson(jsonStr, List.class);                for(Map jsonmap:jsonStrMap)                {                     userid=(String)jsonmap.get("userid");                     startQueryDate=(String)jsonmap.get("startQueryDate");                     endQueryDate=(String)jsonmap.get("endQueryDate");                     staticpassword=(String)jsonmap.get("staticpassword");                     loginname=(String)jsonmap.get("String");                }            }                //将List<Map>转换成List<UserLoginInfo>        } catch (Exception e) {            // TODO: handle exception        }        //查询总记录数        int pageCount=userService.getUserListCount(userid,startQueryDate,endQueryDate,staticpassword,loginname);        List<UserLoginInfo> userList=userService.getAllUserInfo(pageIndex,pageSize,userid,startQueryDate,endQueryDate,staticpassword,loginname);//      String json=tojson(userList);//      request.setAttribute("userList", json);//      request.setAttribute("pageCount", userList.size());//      response.getWriter().print(json);        String jsonlist=tojson(userList,pageCount);        response.getWriter().print(jsonlist);        return null;    }    private String tojson(List<UserLoginInfo> userList, int PageCount) {        // TODO Auto-generated method stub        StringBuilder sb=new StringBuilder("{");        sb.append("\"PageCount\"").append(":").append("\"").append(                PageCount).append("\"");        sb.append(",");        sb.append("\"userList\"").append(":[");        for (int i = 0; i < userList.size(); i++) {            sb.append(tojson(userList.get(i)));            if (i < userList.size() - 1) {                sb.append(",");            }        }        sb.append("]}");        return sb.toString();    }private Object tojson(UserLoginInfo userLoginInfo) {        // TODO Auto-generated method stub        StringBuilder sb = new StringBuilder("{");        sb.append("\"userid\"").append(":").append("\"").append(userLoginInfo.getUserid())                .append("\"");        sb.append(",");        sb.append("\"usertype\"").append(":").append("\"").append(                userLoginInfo.getUsertype()).append("\"");        sb.append(",");        sb.append("\"loginname\"").append(":").append("\"").append(                userLoginInfo.getLoginname()).append("\"");        sb.append(",");        sb.append("\"staticpassword\"").append(":").append("\"").append(                userLoginInfo.getStaticpassword()).append("\"");        sb.append("}");        return sb.toString();    }

4.3 UserDao.java

/** * 根据每页显示的条数pageSize和第几页pageIndex查询用户信息 */    @Override    public List<UserLoginInfo> getAllUserInfo(String pageIndex,String pageSize,String userid,String startQueryDate,String endQueryDate,String staticpassword,String loginname) {        // TODO Auto-generated method stub        DBBeanBase db=new DBBeanBase();        Integer pageIndexnum=Integer.parseInt(pageIndex);        Integer pageSizenum=Integer.parseInt(pageSize);        StringBuffer sql=new StringBuffer();        List<Object> list=new ArrayList<Object>();        sql.append("SELECT * FROM t_e_user_logininfo t1 WHERE 1=1 ");        //如果createtime不为空        if(!StringUtils.isEmpty(startQueryDate)&&!StringUtils                .isEmpty(endQueryDate))        {            sql.append("AND createtime BETWEEN to_timestamp(?,'yyyy-MM-dd') AND to_timestamp(?,'yyyy-MM-dd')" );            list.add(startQueryDate);            list.add(endQueryDate);        }        //用户ID不为空        if(!StringUtils.isEmpty(userid))        {            sql.append("AND userId=? ");            list.add(userid);        }        //如果用户密码不为空        if(!StringUtils.isEmpty(staticpassword))        {            sql.append("AND staticpassword=? ");            list.add(staticpassword);        }        //如果用户名不为空        if(!StringUtils.isEmpty(loginname))        {            sql.append("AND loginname=? ");            list.add(loginname);        }        Object[] objects=new Object[list.size()];        for (int i = 0; i < list.size(); i++) {            objects[i]=list.get(i);        }        //如果有order by ,必须放在limit和offset之前        sql.append("LIMIT "+pageSizenum+" OFFSET "+(pageIndexnum-1)*pageSizenum+" ");        List<UserLoginInfo> userlist=new ArrayList<UserLoginInfo>();        ResultSet res=db.excuteQuery(sql.toString(), objects);        try        {            while(res.next())            {                UserLoginInfo user=new UserLoginInfo();                user.setUserid(res.getString("userid"));                user.setUsertype(res.getString("usertype"));                user.setLoginname(res.getString("loginname"));                user.setStaticpassword(res.getString("staticpassword"));                userlist.add(user);            }        } catch (SQLException e) {            // TODO: handle exception        }        return userlist;    }/** * 查询用户信息记录总数 */    @Override    public int getUserListCount(String userid,String startQueryDate,String endQueryDate,String staticpassword,String loginname) {        // TODO Auto-generated method stub        int pageCount=0;        DBBeanBase db=new DBBeanBase();        StringBuffer sql=new StringBuffer();        sql.append("SELECT count(*) pageCount FROM t_e_user_logininfo WHERE 1=1 ");        List<Object> list=new ArrayList<Object>();        //如果createtime不为空                if(!StringUtils.isEmpty(startQueryDate)&&!StringUtils                        .isEmpty(endQueryDate))                {                    sql.append("AND createtime BETWEEN to_timestamp(?,'yyyy-MM-dd hh24:mi:ss') AND to_timestamp(?,'yyyy-MM-dd hh24:mi:ss')" );                    list.add(startQueryDate);                    list.add(endQueryDate);                }                //用户ID不为空                if(!StringUtils.isEmpty(userid))                {                    sql.append("AND userId=? ");                    list.add(userid);                }                //如果用户密码不为空                if(!StringUtils.isEmpty(staticpassword))                {                    sql.append("AND staticpassword=? ");                    list.add(staticpassword);                }                //如果用户名不为空                if(!StringUtils.isEmpty(loginname))                {                    sql.append("AND loginname=? ");                    list.add(loginname);                }                Object[] objects=new Object[list.size()];                for (int i = 0; i < list.size(); i++) {                    objects[i]=list.get(i);                }        ResultSet res=db.excuteQuery(sql.toString(), objects);        try         {            if(res.next())            {                 pageCount=Integer.parseInt(res.getString("pageCount"));            }        } catch (Exception e) {            // TODO: handle exception        }        return pageCount;    }

4.4 MyJsonUtil.java(json数据转换类)

package com.bookShop.util;import java.sql.Timestamp;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;import com.alibaba.fastjson.serializer.SerializeConfig;import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;public class MyJsonUtil {    private static SerializeConfig mapping = new SerializeConfig();    // 日期格式化    static    {        mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss"));        mapping.put(Timestamp.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss"));    }    /**     * 把json串转为指定的对象     * 【注:str:我试过用[{"userid":"","startQueryDate":"","endQueryDate":"","staticpassword":"123","loginname":""}]可以,但用{"userid":"","startQueryDate":"","endQueryDate":"","staticpassword":"123","loginname":""}不可以】     * @param <T>     */    public static <T> T fromJson(String str, Class<T> clazz)    throws Exception    {        T t = JSON.parseObject(str, clazz);        return t;    }    /**     * 把对象转为json串     */    public static String toJson(Object obj)    {        return JSON.toJSONString(obj, mapping);    }}

5、注意事项
UserServlet中 List jsonStrMap=(List)MyJsonUtil.fromJson(jsonStr, List.class);
将json数据转换成List
时,如果用如下格式则可以成功:[{“userid”:”“,”startQueryDate”:”“,”endQueryDate”:”“,”staticpassword”:”123”,”loginname”:”“}
]
若用如下格式则转换失败:
{“userid”:”“,”startQueryDate”:”“,”endQueryDate”:”“,”staticpassword”:”123”,”loginname”:”“}

0 0