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. python基础-基本概念

    python概念介绍 python是一门动态解释型的强类型定义语言,创始人吉多·范罗苏姆(Guido van Rossum) #编译型语言 编译型:一次性将所有程序编译成二进制文件 缺点:开发效率低, ...

  2. sql的练习题

    表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) --学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_i ...

  3. MySql5.7.28下载、安装、登陆详解

    进入MySql官网下载,页面如下 根据自己需求,选择适合自己的进行下载 然后解压安装包到自己的喜欢的路径 配置环境变量 添加环境系统变量 MYSQL_HOME:D:\Program Files\mys ...

  4. 使用 custom element 创建自定义元素

    很早我们就可以在 HTML 文档中写 <custome-element></custom-element> 这样的自定义名称标签.但是浏览器对于不认识的标签一律当成一个普通的行 ...

  5. frp 内网穿透访问内网Web服务

    ps:最近想要通过域名(公网)访问或者测试在本地搭建的 web 服务(不想在公网IP服务器上再部署个服务,也不想通过teamview等工具远程卡到爆!), 由于本地机器没有公网 IP,无法将域名解析到 ...

  6. 如何为SpringBoot服务添加HTTPS证书

    HTTPS是HTTP的安全版本,旨在提供数据传输层安全性(TLS).当你的应用不使用HTTP协议的时候,浏览器地址栏就会出现一个不安全的提示.HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据 ...

  7. django数据库分库migrate

    最近在研究微服务和分布式,设计到了数据库分库,记录一下 首先,创建多个数据库,如果是已经生成的数据库,可以分库,这里我是新创建的项目,刚好可以用来尝试 我是用docker创建的mysql数据库容器 拉 ...

  8. nes 红白机模拟器 第2篇 InfoNES

    InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES  的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame ()  Wo ...

  9. PHP eval变量延迟赋值

    $str = 'and {$prev}name like \'%五子棋%\'';$prev = "table.";eval("\$str = \"$str\&q ...

  10. day1 执行用例

    故事1 今天的工作,是执行已写好的"回馈"模块用例 每个子模块的用例都有优先级之分 肯定要先进行通过性测试,验证正常流 因此,我优先执行各个子模块优先级最高的那条用例,进行通过性测 ...