1.先写好html基础样式

我懒得去写css样式233,能看就行

    <style>
#page {
width: 20px;
}
</style>
<table>
<tr>
<th>id</th>
<th>name</th>
<th>pwd</th>
<th>age</th>
</tr>
<tbody id="res"> </tbody>
</table>
<button id="up_btn">上一页</button>
<span><input type="text" id="page"><span id="pages"></span></span>
<button id="down_btn">下一页</button>

2.编写servlet

  • 2.1 先写查询数据库总条数的servlet LoadServlet

        //WorkerDaoImpl是我自己写的数据库操作类
WorkDaoImpl workDao=new WorkDaoImpl();
int count =0;
try {
//查询总条数
count = workDao.queueCountWorker();
} catch (Exception e) {
e.printStackTrace();
}
//传输类型为json,编码为utf-8
response.setContentType("application/json;charset=utf-8");
//Java对象转换JSON,导入的是Jackson的包
ObjectMapper mapper=new ObjectMapper();
Map<String,Object> map=new HashMap<>();
map.put("count",count);
mapper.writeValue(response.getWriter(),map);
//将总条数写入ServletContext域,避免多次查询浪费资源
ServletContext sc = this.getServletContext();
sc.setAttribute("count",count);
  • 2.2 编写查询数据的servlet QueueAllWorkersServlet

       //获取前端传来的页码数
int page = Integer.parseInt(request.getParameter("page"));
//从ServletContext中获取总条数
ServletContext sc = this.getServletContext();
int count = (Integer) sc.getAttribute("count"); List<Worker> workers = null;
WorkDaoImpl workDao = new WorkDaoImpl();
try {
//当页码小于1,显示第一页的数据
if (page<1){
workers = workDao.queueAllWorker(0, 5);
//当页码大于最大页数,显示最大页数的数据
}else if (page>Math.ceil(((double)count)/5)){
workers = workDao.queueAllWorker((int)Math.ceil(((double)count)/5)-1, 5);
}else {
workers = workDao.queueAllWorker((page - 1) * 5, 5);
}
} catch (Exception e) {
e.printStackTrace();
}
//数据类型为json,字符集为utf-8
response.setContentType("application/json;charset=utf-8");
//数据传出
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getWriter(), workers);
  • 2.3 补充:JSON数据和Java对象的相互转换

    • JSON解析器:
    • 常见的解析器:Jsonlib,Gson,fastjson,jackson
    • 1.JSON转为Java对象
        1. 导入jackson的相关jar包
      2. 创建Jackson核心对象 ObjectMapper
      3. 调用ObjectMapper的相关方法进行转换
      1. readValue(json字符串数据,Class)
    • 2. Java对象转换JSON
        1. 使用步骤:
      1. 导入jackson的相关jar包
      2. 创建Jackson核心对象 ObjectMapper
      3. 调用ObjectMapper的相关方法进行转换
      1. 转换方法:
      * writeValue(参数1,obj):
      参数1:
      File:将obj对象转换为JSON字符串,并保存到指定的文件中
      Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
      OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
      * writeValueAsString(obj):将对象转为json字符串 2. 注解:
      1. @JsonIgnore:排除属性。
      2. @JsonFormat:属性值得格式化
      * @JsonFormat(pattern = "yyyy-MM-dd") 3. 复杂java对象转换
      1. List:数组
      2. Map:对象格式一致

3.ajax编写

  • 3.1 源码

        $(function () {
var page = 1;
var pages = 1;
;
$("#page").val(page); //查询方法
function ser() {
$.post("QueryAllWorkers2Servlet", {page: page}, function (data) {
//拼接字符串最后写入到res中
var str = "";
//遍历data数组
for (var i = 0; i < data.length; i++) {
//获取data当前的json
var user = data[i];
str += "<tr>";
//遍历json
for (var key in user) {
str = str + "<td>" + user[key] + "</td>"; }
str = str + "</tr>";
}
$("#res").html(str);
});
} //刷新后自动获取最大页码
function load() {
$.post("LoadServlet", null, function (data) {
pages = Math.ceil(data["count"] / 5);
$("#pages").text("/" + pages);
})
} load();
ser();
//下一页点击事件
$("#down_btn").click(function () {
page = page + 1;
//检验
if (page > pages) {
page = pages;
}
//将page中的值改为修改后的页码
$("#page").val(page);
ser(); });
//上一页点击事件
$("#up_btn").click(function () {
page = page - 1;
//检验
if (page < 1) {
page = 1;
}
//修改
$("#page").val(page);
ser(); });
//page输入框失去焦点事件
$("#page").blur(function () {
page = parseInt($("#page").val());
//校验,若输入的值大于最大页码数,则将页码变为最大页码数
if (page > pages) {
page = pages;
//校验,若输入的值小于1,则将页码变为1
} else if (page < 1) {
page = 1;
}
$("#page").val(page);
ser();
}); });
  • 3.2 补充 ajax参数

      	1. $.ajax()
    * 语法:$.ajax({键值对});
    //使用$.ajax()发送异步请求
    $.ajax({
    url:"ajaxServlet1111" , // 请求路径
    type:"POST" , //请求方式
    //data: "username=jack&age=23",//请求参数
    data:{"username":"jack","age":23},
    success:function (data) {
    alert(data);
    },//响应成功后的回调函数
    error:function () {
    alert("出错啦...")
    },//表示如果请求响应出现错误,会执行的回调函数 dataType:"text"//设置接受到的响应数据的格式
    });
    2. $.get():发送get请求
    * 语法:$.get(url, [data], [callback], [type])
    * 参数:
    * url:请求路径
    * data:请求参数
    * callback:回调函数
    * type:响应结果的类型 3. $.post():发送post请求
    * 语法:$.post(url, [data], [callback], [type])
    * 参数:
    * url:请求路径
    * data:请求参数
    * callback:回调函数
    * type:响应结果的类型

java,jq,ajax写分页的更多相关文章

  1. Ajax写分页查询(实现不刷新页面)

    获取数据库中大量的信息显示在页面上,必然要使用到分页查询: 若不使用Ajax,而是用其他的方法,肯定是要刷新页面的,用户体检很不好, 所以最好使用Ajax的方法写分页查询: 1.先来找一张数据很多的表 ...

  2. 用ajax写分页查询-----2017-05-17

    要写分页,首先你得清楚,一页你想显示多少条信息?如何计算总共显示的页数? 先说一下思路: (1)从数据库读取数据,以chenai表为例,读取所有留言信息.并能够实现输入发送者,可以查询该发送者的留言总 ...

  3. 如何用ajax写分页查询(以留言信息为例)-----2017-05-17

    要写分页,首先你得清楚,一页你想显示多少条信息?如何计算总共显示的页数? 先说一下思路: (1)从数据库读取数据,以chenai表为例,读取所有留言信息.并能够实现输入发送者,可以查询该发送者的留言总 ...

  4. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

  5. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  6. 原生Ajax 和Jq Ajax

    前言:这次介绍的是利用ajax与后台进行数据交换的小例子,所以demo必须通过服务器来打开.服务器环境非常好搭建,从网上下载wamp或xampp,一步步安装就ok,然后再把写好的页面放在服务器中指定的 ...

  7. Ajax做分页

    Ajax做分页 用这种ajax做分页的方法比较简单,把代码直接复制就可以,然后根据实际更改一下里面的参数. .设置分页显示显示的样式,显示效果如下. 复制代码 <style type=" ...

  8. Yii 框架ajax搜索分页

    要想实现ajax搜索分页 其实很简单 第一步:在 Yii 框架自带的搜索和分页正常运行的情况下,在视图层

  9. ajax实现分页和分页查询

    之前有写过ajax的加载页面,是非常简单的,而且不需要重新刷新页面,写起来也是非常的方便,今天写的分页是不用封装page.class.php的, 是单纯的js和ajax写出来的  首先为了页面的整齐与 ...

随机推荐

  1. 从租人APP沦为性工作发布平台 看共享经济监管边界

    看共享经济监管边界" title="从租人APP沦为性工作发布平台 看共享经济监管边界"> 继直播类软件部分涉黄之后,最近火爆的各类"租人"软件 ...

  2. 初学Qt——QTableView+QSqlqueryModel

    我们在显示报表时可以用到上面两个类来实现,QTableView负责对视图显示:QSqlqueryModel则负责数据模块. 这里数据查询使用QSqlqueryModel主要是这个类可以通过自己写的查询 ...

  3. Spring事务Transactional和动态代理(一)-JDK代理实现

    系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transa ...

  4. C++ 迷宫寻路问题

    迷宫寻路应该是栈结构的一个非常经典的应用了, 最近看数据结构算法应用时看到了这个问题, 想起来在校求学时参加算法竞赛有遇到过相关问题, 感觉十分亲切, 在此求解并分享过程, 如有疏漏, 欢迎指正 问题 ...

  5. SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验

    ControllerAdvice 指示带注释的类辅助“控制器”. 作为的特殊化@Component,允许通过类路径扫描自动检测实现类. 通常用于定义@ExceptionHandler, @InitBi ...

  6. Rxjs入门实践-各种排序算法排序过程的可视化展示

    Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下<算法>的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练 ...

  7. vue+element 表单封成组件(1)

    作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...

  8. 零基础HTML及CSS编码总结

    任务目的 针对设计稿样式进行合理的HTML架构,包括以下但不限于: * 掌握常用HTML标签的含义.用法 能够基于设计稿来合理规划HTML文档结构 理解语义化,合理地使用HTML标签来构建页面 掌握基 ...

  9. Postgresql存放数组形式的数据

    Postgres 数据库允许把字段定义为可变长度的数组.数据类型既可以是内置类型,也可以是用户自定义的类型或枚举类型. 例如: 创建表 create table demo(name text,subj ...

  10. 使用VMware12在CentOS7上部署docker实例

    今天下午算是自己搞了一下午才搞出来,对于认为linux是自己死穴的我,现在能搞出来,心里滋味不是一丢丢,哈哈~~~ 算了,废话不多说,直接上图!步骤如下: 1.在安装好VMware12并安装好了cen ...