一. 使用场景
如果数据量较小,直接用"假分页"即可,但如果数据量较大,或者数据来源于webservice等导致数据获取的时间特别长,那么就需要用到服务器模式。
二. 准备工作
Bootstrap-3.3.7
datatables.min.css
datatables.min.js
三. 前端
1. htm
2. js
url_pattern是我写在properties.js中的一个全局变量
比如: url_pattern="http://127.0.0.1:8080/项目名/xxx/";
新增属性:
1. datatable每页显示的行数: "lengthMenu": [5,10, 25,
50]
四. 服务端
1. controller层
其实接收的参数根本没必要写这么多,直接用map即可,map中不仅包含datatable自身携带的如page、ordering之类的属性值,还囊括了我们自定义传入的属性值。非常方便。
2. Service层
3. PageData
4. AccessLog.java 该类中只要包含上述的属性即可。
五. 服务层还可以参考以下代码
//获取请求次数
privateString
draw ="0";
//数据起始位置privateString
start; //数据长度privateString
length; //总记录数privateString
recordsTotal ="0";
//过滤后记录数privateString
recordsFiltered ="";
//定义列名privateString[]
cols = {"name","proTopicName","missionName","areaName","fileformat","areaName","research","category"};
//获取客户端需要那一列排序privateString
orderColumn ="0";
//获取排序方式 默认为ascprivateString
orderDir ="asc";
//获取用户过滤框里的字符privateString
searchValue; publicvoidgetAllResultFiles()
throws IOException { //获取文件参数 HttpServletRequest request = ServletActionContext.getRequest();
draw=request.getParameter("draw");
start = request.getParameter("start");
length = request.getParameter("length");
orderColumn = request.getParameter("order[0][column]");
orderColumn = cols[Integer.parseInt(orderColumn)]; orderDir =
request.getParameter("order[0][dir]");
searchValue = request.getParameter("search[value]");
List sArray =newArrayList();
if(!searchValue.equals(""))
{//判断搜索框是否为空,添加查询条件
sArray.add("
name like '%"+
searchValue +"%'");
sArray.add("
fileformat like '%"+
searchValue +"%'");
} String individualSearch ="";
if(sArray.size()
==1)
{ individualSearch = sArray.get(0);
}elseif(sArray.size()
>1)
{ for(inti
=0;
i < sArray.size() -1;
i++) { individualSearch += sArray.get(i)
+"
or ";
} individualSearch += sArray.get(sArray.size()
-1);
} //获取数据库总记录数 recordsTotal=""+resultFilesService.getModelCount();
String searchSQL ="";
if(individualSearch
!="")
{ searchSQL ="
where "+
individualSearch; } searchSQL+="
order by "+
orderColumn +"
"+
orderDir; List
resultfilesList=resultFilesService.findResultfilesList(searchSQL,start,length);
if(searchValue
!="")
{ recordsFiltered =""+resultFilesService.getModelCount(searchSQL);
} else{
recordsFiltered = recordsTotal; } if(resultfilesList!=null)
{ ...//对数据进行处理
Mapinfo =newHashMap();
info.put("data",
resultfilesBeanList); info.put("recordsTotal",
recordsTotal); info.put("recordsFiltered",
recordsFiltered); info.put("draw",
draw); JSONObject jsonstr = JSONObject.fromObject(info);
System.out.println(jsonstr.toString());
results = jsonstr.toString(); } HttpServletResponse response =
ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(results); response.getWriter().close();
}