用Servlet与JSP中实现分页查询

这个题目,总共分4个部分

1.查询总页数,把页码显示在页面上

2.把每页的内容显示在页面上

3.首页,尾页,上一页,下一页

4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页)

详解如下:(一部分代码在servlet中,一部分代码在JSP中)

Servlet

package com.lianxi;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class WorkServletB
 */
@WebServlet("/WorkServletB")
public class WorkServletB extends HttpServlet {
    //外层定义一个变量(每页显示的数量)
    private final int PageSize=3;   

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.1调用dao类中的方法,查出总页数;
        int PageCount=new WorkDao().select(PageSize);
        //1.2把总页数传到页面,显示
        request.setAttribute("pagecount", PageCount);

        //2.1找出每页显示的内容传给界面,但是当我第一次进入页面时没有选择页码,页码要默认在第一页,所以首先定义一个PageNum,在进行判断!
        int PageNum=1;
        int PageNow=1;//3.2定义当前页是1
        if(request.getParameter("pagenum") != null){
        //2.2如果接收的pagenum不是空的说明我在选择页数,那么就让PageNum=接收过来的值,以为接收过来的是一个字符串所以在这里需要强制转换一下
            PageNum=Integer.parseInt(request.getParameter("pagenum"));

        //3.3如果接收的pagenum不是空的说明我在选择页数,那么就让PageNow=接收过来的值,以为接收过来的是一个字符串所以在这里需要强制转换一下
            PageNow=Integer.parseInt(request.getParameter("pagenum"));
        }
        //2.3把每页的内容穿到页面
        ArrayList<Work> list=new WorkDao().select(PageNum, PageSize);
        request.setAttribute("list", list);

        //3.1设置一个上一页和下一页,首先我们要知道他的当前页(PageNow)是什么?还要判断当前页大于1时上一页才可用,当前页小于总页数时下一页才可用
        //3.4三元运算判断
        int PageS=PageNow>1?PageNow-1:1;
        int PageX=PageNow<PageCount?PageNow+1:PageCount;
        //3.5网页面传值
        request.setAttribute("pages", PageS);
        request.setAttribute("pagex", PageX);

        //4.1设置下拉菜单显示页数,首先把当前页PageNum传到页面去
        request.setAttribute("pagenow", PageNow);

        request.getRequestDispatcher("FenYeChaXun.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

JSP

<%@page import="com.lianxi.Work"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<form action="WorkServletB" method="post" id="i">
    <table style="background-color: #000; color: #FFF">
        <tr>
            <td>编号</td>
            <td>学号</td>
            <td>单位</td>
            <td>部门</td>
            <td>工龄</td>
            <td>操作</td>
        </tr>
    <%
    ArrayList<Work> list=(ArrayList<Work>)request.getAttribute("list");//接受每页显示的内容
    for(Work w:list){
        //循环输出
    %>
        <tr style="background-color: #FFF; color: #000">
            <td><%=w.getIds() %></td>
            <td><%=w.getInfoCode() %></td>
            <td><%=w.getFirm() %></td>
            <td><%=w.getDepart() %></td>
            <td><%=w.getOrders() %></td>
            <td>操作</td>
        </tr>
    <%
    }
    int pages=(int)request.getAttribute("pages");//接受上一页数
    int pagex=(int)request.getAttribute("pagex");//接受下一页数
    int pagenow=(int)request.getAttribute("pagenow");//接受当前页码
    %>
    </table>
    <a href="WorkServletB?pagenum=<%=1 %>">首页</a><!-- 设置一个首页所以它的pagenum必然是1 -->
    <a href="WorkServletB?pagenum=<%=pages %>">上一页</a>
    <%
    int pagecount=(int)request.getAttribute("pagecount");//接受总页数
    for(int i=1;i<=pagecount;i++){
        //利用循环输出页码,并且把a标签地址设置为动态的,点击谁就提交谁的pagenum
    %>
        <a href="WorkServletB?pagenum=<%=i %>"><%=i %></a>
    <%
    }
    %>
    <a href="WorkServletB?pagenum=<%=pagex %>">下一页</a>
    <a href="WorkServletB?pagenum=<%=pagecount %>">尾页</a><br><!-- 设置一个尾页所以它的pagenum必然是总页数,所以我们要从servlet中传过一个总页数pagecount来 -->
    <select name="pagenum" onchange="change()"><!-- 状态改变时触发change方法 -->
    <%
    for(int i=1;i<=pagecount;i++){
        //判断一下当前页是不是等于i,如果是当前页就是selected
        if(i==pagenow){
    %>
        <option value="<%=i %>" selected="selected"><%=i %></option>
    <%
        }else{
    %>
        <option value="<%=i %>"><%=i %></option>
    <%
        }
    }
    %>
    </select>
</form>
</body>
<!-- 当我选中下拉列表中的某一项时,自动提交 -->
<script type="text/javascript">
    function change(){
        document.getElementById("i").submit();
    }
</script>
</html>
时间: 2024-12-11 05:05:53

用Servlet与JSP中实现分页查询的相关文章

ssh框架中的分页查询

ssh中的分页查询是比较常用的,接下来我用代码来介绍如何实现一个分页查询 首先建立一个Model用来储存查询分页的信息 package com.haiziwang.qrlogin.utils; import java.util.List; public class prospage<T> { private int page; // 当前页数 private int totalCount; // 总记录数 private int totalPage; // 总页数 private int er

mongo中的分页查询

/** * @param $uid * @param $app_id * @param $start_time * @param $end_time * @param $start_page * @param $limit_page * mongodb中的分页查询 */ public static function getUserRevenueInfoList($uid, $source,$app_id, $start_time, $end_time,$skip, $limit){ $match

java基础 第十四章(Servlet声明周期、Servlet向jsp中提供数据、Servlet跳转jsp、jsp中书写java代码)

一.Servlet声明周期 1.Servlet的声明周期一般分为四步:加载.实例化.服务.销毁. 2.实例化在整个生命周期中只执行一次. 二.jsp 1.Servlet向jsp中提供数据 request.setAttribute( , ); 例:request.setAttribute("key" , "Hello"); 2.Servlet跳转jsp (1)同一请求方式:request.getRequestDispatcher("/路径").fo

SQL Server中的分页查询 select top

SQL Server中的分页查询 https://blog.csdn.net/tswc_byy/article/details/82053091 零.码仙励志 比我差的人还没放弃,比我好的人仍在努力,我就更没资格说我无能为力 一.建库和建表 create database scort use scort create table emp ( empno int primary key, ename nvarchar(10), sal int, deptno int ) insert into e

在javaweb中使用分页查询的详细步骤

首先在原有的数据库实体bean上在建立一个分页实体bean /** * 用于展示分页数据的Javabean对象 * @author Lenovo * */public class PageenationBean { private Integer currPage;//当前页数 private Integer totalPage;//总页数 private List<UserBean> dataList;//table的数据 public Integer getCurrPage() { ret

freecms中的分页查询

freecms支持分页查询,很多Service中都有用到,可以作为参考. 如果想支持分页查询,Action需要从BaseAction中派生出来,BaseAction中有order, currPage, pageSize等属性,在查询时传给Service,如 **Service.find(**, order, currPage,  pageSize).在Service的查询中,需要使用 mapper 的 selectPageByExample, 在 mapper中加入 selectPageByEx

Servlet,JSP 中的中文乱码问题以及解决方案

问题描述: 在Servlet,JSP 传递数据中,英文无影响,而中文有时候就会出现乱码. 解决方案: 相同的编码: 同一个项目中的每个文件应当设置和保存相同的编码方式,如: html中 <meta charset="utf-8"> 在jsp 或者Servlet处理程序中添加: void setCharacterEncoding(java.lang.String env) 设置请求消息体的字符编码 如: request. setCharacterEncoding("

怎样在 Akka Persistence 中实现分页查询

在 Akka Persistence 中,数据都缓存在服务内存(状态),后端存储的都是一些持久化的事件日志,没法使用类似 SQL 一样的 DSL 来进行分页查询.利用 Akka Streams 和 Actor 我们可以通过编码的方式来实现分页查询的效果,而且这个分页查询还是分步式并行的…… EventSourcedBehavior Akka Persistence的EventSourcedBehavior里实现了CQRS模型,通过commandHandler与eventHandler解耦了命令处

SQL Server中的分页查询

分页查询很简单,具体代码如下: --分页查询 --查询1-3行数据 select top 3 * from emp order by sal desc; --查询4-6行数据 select top 3 * from emp where empno not in (select top 3 empno from emp order by sal desc) order by sal desc; --查询7-9行数据 select top 3 * from emp where empno not i