• javaweb 最简单的分页技术


    原文来自于https://www.cnblogs.com/xwlych/p/6017833.html

    个人由加了一点注释,他的代码我运行不起来,弄了好一会

    bean包  User.java

    package bean;
    
    public class User {
        private String username;
        private String password;
        private String name;
        public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    }
    

      PageServlet.java

    package com;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import bean.User;
    
    /**
     * Servlet implementation class PageServlet
     */
    @WebServlet("/PageServlet")
    public class PageServlet extends HttpServlet {
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            ArrayList<User> list = new ArrayList<User>();//这个应该理解吧自定义数组对象[泛型]
            // 在这里我不再连接数据库而是用虚拟的数据进行测试效果,小伙伴可以连接数据库查询到之后返回一个list
                for (int i = 1; i < 7; i++) {
                    User user1 = new User();
                    user1.setUsername("" + i + "个用户名");
                    user1.setPassword("" + i + "密码");
                    user1.setName("" + i + "名字");
                    list.add(user1);
                }
               
                
                HttpSession session =request.getSession();//获取session对象
                // 将数据存到session中以便于在前台获取
                session.setAttribute("userList", list);
                //获取当前页的页数并转为int类型,最终将数据存到session中
                int pageNos;
                if (request.getParameter("pageNos") == null
                        || Integer.parseInt(request.getParameter("pageNos")) < 1) {
                    pageNos = 1;
                } else {
                    pageNos = Integer.parseInt(request.getParameter("pageNos"));
                }
                session.setAttribute("pageNos", pageNos);
                // 定义总页数并存到session中
                int countPage = 6;//这个是总页数,大家可以数据库查询获得
                // 在实际开发中我们的总页数可以根据sql语句得到查询到的总条数,然后用总条数除每页的条数得到总页数
                session.setAttribute("countPage", countPage);
                request.getRequestDispatcher("index.jsp").forward(request, response);//带参数的重定向
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }

     

    index.jsp

      

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>在此处插入标题</title>
    </head>
    
    <body>
    <!-- 这个是jstl 表达式和EL表达式,大家可以去下一个jstl jar包 复制到 web-inf目录下(eclipse) 然后包含 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>这个头文件 至于语法我不懂 这个foreach要写在body
    下面,要不循环不出来,因为我写了一个大的报表(如果只把这个foreach 放在我写的表格table前面 无法循环 ,原因不知)下面的
    begin="${(pageNos-1)*1 为开始页数 和 end="${pageNos*1-1}"结束页数,我这里是每页显示一个,如果大家要显示多个更改此代码
    例如两个的话begin="${(pageNos-1)*2 }"  end="${pageNos*2-1}" 嗯嗯那没太注意算法,不求甚解吧哈哈哈-->
    
        <c:forEach items="${userList}" var="user" begin="${(pageNos-1)*1 }"
            end="${pageNos*1-1}"> <!-- 这里是控制每页显示的个数 -->
            <center>
                <div>${user.username}</div>
            </center>
            <center>
                <div>${user.password}</div>
                <div>${user.name}</div>
            </center>
        </c:forEach>
        <center>
        <c:if test="${pageNos>1 }"> <!-- 这里是一个判断你页数是不是大于1如果把这行去了会出现什么情况,自己试试吧 -->
    <a href="PageServlet?pageNos=1" >首页</a>
    <a href="PageServlet?pageNos=${pageNos-1 }">上一页</a>
    </c:if>
    <c:if test="${pageNos <countPage }">
    <a href="PageServlet?pageNos=${pageNos+1 }">下一页</a>
    <a href="PageServlet?pageNos=${countPage }">末页</a>
    </c:if>
    </center>
    <form action="PageServlet" method="get"><!-- 这里建立一个表单提交到服务器 -->
    <h4 align="center">共${countPage}页  
    <input type="text" value="${pageNos}" name="pageNos" size="1">页
    <input type="submit" value="go">
    </h4>
    </form>
      </body>
    </html>
    

     一定注意你运行的时候要从servlet运行 就是点中你的servlet文件运行从服务器运行,要不会报错的,原因是,我觉得你们懂吧!....要不前台会报错的...自己想吧,

    一定要下载jstl 包 并且包含头文件 --------------上面有解释

     

    还有那个jsp页面 把我的这个注释删了运行---要不报错----一定删了啊啊啊  注释如下:

    <!-- 这个是jstl 表达式和EL表达式,大家可以去下一个jstl jar包 复制到 web-inf目录下(eclipse) 然后包含 <%//@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>这个头文件 至于语法我不懂 这个foreach要写在body
    下面,要不循环不出来,因为我写了一个大的报表(如果只把这个foreach 放在我写的表格table前面 无法循环 ,原因不知)下面的
    begin="${(pageNos-1)*1 为开始页数 和 end="${pageNos*1-1}"结束页数,我这里是每页显示一个,如果大家要显示多个更改此代码
    例如两个的话begin="${(pageNos-1)*2 }" end="${pageNos*2-1}" 嗯嗯那没太注意算法,不求甚解吧哈哈哈-->

    运行截图:

     

    代码结构:

    代码打包下载:链接: https://pan.baidu.com/s/1uednZQBmR_AVKbGUw-mIIA 密码: ndwa  

     

  • 相关阅读:
    Global Vectors forWord Representation
    Latent Semantic Analysis(LSA/ LSI)原理简介
    目前最快速的多线程Kmeans算法,java实现
    UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目
    中文分词之逆向最大匹配算法结合时间位置进行分词
    Lucene 索引与检索架构图
    搜索算法
    聚类
    动态规划--国王挖金矿问题
    JS获取后台返回的JSON数据
  • 原文地址:https://www.cnblogs.com/xuexidememeda/p/8972906.html
Copyright © 2020-2023  润新知