zoukankan      html  css  js  c++  java
  • 用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>
  • 相关阅读:
    godaddy 问题
    2014.10.5 再次学习LINUX
    自测 基础 js 脚本。
    error: cast from ‘char*’ to ‘int’ loses precision
    python 使用 Pyscript 调试 报错
    VS2012出现加载失败时的解决办法 win7同样适用
    Program received signal SIGILL, Illegal instruction
    visual assist x 注释配置
    python 学习网站
    python 典型文件结构
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6308931.html
Copyright © 2011-2022 走看看