jsp:使用jsp完成数据的分页显示

一,使用jsp将数据库内的数据。分页显示到页面

1,创建一个servelt处理后台数据,和数据库的数据

private static final long serUid=1L;
    //加载驱动
    static final String jdbc="com.mysql.jdbc.Driver";
    //要连接的数据库url
    static final String db_url="jdbc:mysql://localhost:3306/test";
    //数据库用户名
    static final String user="db";
    //数据库密码
    static final String pass="1743721";
    int currentPage=1;
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        
        Connection conn=null;
        Statement stmt=null;
        //显示的数据的格式
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out =response.getWriter();
        try {
            Class.forName(jdbc);
            conn=DriverManager.getConnection(db_url,user,pass);
            stmt=conn.createStatement();
            String sql=null;
            sql="select * from t_message where 1=1 order by s_date desc";
            int pageSize=5;
            int d=3;
            String re=null;
        //接收url中的参数 re
=request.getQueryString(); //System.out.print(re); if(re!=null){ String[] ee=re.split("="); if("cupg".equals(ee[0])){ re=ee[1]; int r=Integer.valueOf(re).intValue(); d=r; currentPage=r; }else{ re=ee[1]; int bt=Integer.valueOf(re).intValue(); currentPage=bt; if(bt<=3){ d=3; }else{ d=bt; } } } if(currentPage<=0){ d=3; currentPage=1; } int start=(currentPage-1)*pageSize;
        //获取数据进行分页处理 String limitsql
="select * from("+sql+")pp limit "+start+","+pageSize; ResultSet rs=stmt.executeQuery(limitsql); List<User> userlist=new ArrayList<User>(); User user=null; while(rs.next()){
        //创建一个对象存入数据 user
=new User(); user.setMessage_id(rs.getInt("message_id")); user.setTitle(rs.getString("title")); user.setName(rs.getString("name")); user.setS_date(rs.getString("s_date")); user.setS_des(rs.getString("s_des")); user.setL_des(rs.getString("l_des")); userlist.add(user); } request.setAttribute("nubtn",d); request.setAttribute("cupg", currentPage); request.setAttribute("args", userlist); request.getRequestDispatcher("/qh/message.jsp").forward(request, response); //关闭通道 rs.close(); conn.close(); stmt.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }

2,在页面接收并处理得到的数据

    <div class="column">
        <h1 class="column-tit"><span><a href="#" title="首页">首页</a> > <a href="#" title="留言回复">留言回复</a></span>留言回复</h1>
        <div class="mailbox mt20">

                   <% ArrayList userlist=(ArrayList)request.getAttribute("args");
              //遍历的到的数据
for(int i=0;i<userlist.size();i++){ User user=(User)userlist.get(i); %> <div class="online-content clearfix"> <div class="icon fl"> <img src="../images/online.png" alt=""> </div> <div class="question fr"> <p>留言主题:<%=user.getTitle()%> </p> <p class="name"><span>网友:<%=user.getName()%></span><span><%=user.getS_date()%></span><span><a target="_blank" href="#">我要留言</a></span></p> <div class="message-i "> <p><strong>留言详情:</strong><%=user.getS_des()%></p> </div> <div class="answer"> <p><strong>执法监察总队回复:</strong><%=user.getL_des()%></p> </div> </div> </div> <% } %> <div class="page">
          
            //分页按钮的处理 <%int currentPage=(Integer)request.getAttribute("cupg"); int cugg=3; Integer d=0; int nubtn=(Integer)request.getAttribute("nubtn"); if(nubtn>=3)cugg=nubtn; String a=request.getQueryString(); if(a!=null){ String[] ee=a.split("="); a=ee[1]; d=Integer.parseInt(a); } %> <div style="display: none;" id="yc"><%=a%></div> <ul id="mu"><li class="num"><a href="/MysqlTest/servlet/GetMysql?cupg=1">首页</a></li> <li class="num"><a href="/MysqlTest/servlet/GetMysql?cupg=<%=currentPage-1%>">上一页</a></li> <li class="num page-active"><a href="/MysqlTest/servlet/GetMysql?nubtn=<%=cugg-2%>"><%=cugg-2%></a></li> <li class="num" style=""><a href="/MysqlTest/servlet/GetMysql?nubtn=<%=cugg-1%>"><%=cugg-1 %></a></li> <li class="num"><a href="/MysqlTest/servlet/GetMysql?nubtn=<%=cugg %>"><%=cugg %></a></li> <li class="num" ><a href="/MysqlTest/servlet/GetMysql?nubtn=<%=cugg+1%>"><%=cugg+1%></a></li> <li class="num"><a href="/MysqlTest/servlet/GetMysql?nubtn=<%=cugg+2%>"><%=cugg+2%></a></li> <li class="page-speciall">...</li><li class="num">34</li> <li class="num"><a href="/MysqlTest/servlet/GetMysql?cupg=<%=currentPage+1%>" >下一页</a></li> <li class="num"><a href=>尾页</a></li></ul> </div> </div> </div>

 

转载于:https://www.cnblogs.com/dybe/p/8227638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP中实现分页显示数据的步骤如下: 1. 在JSP页面中使用JSTL标签库中的<c:forEach>标签或者JSP自带的<% %>标签,遍历数据集合并将数据显示在页面上。 2. 在页面上添加分页导航条,用于用户切换不同页面的数据。可以通过<a>标签或者<button>标签来实现。 3. 在后台代码中,根据用户请求的当前页码以及每页显示数据量,计算出要显示数据的起始位置和结束位置。 4. 从数据源中查询数据,并根据起始位置和结束位置来限制查询结果的数量。 5. 将查询结果封装成JavaBean对象,然后将JavaBean对象放入请求作用域(request)中,以便在JSP页面中遍历和显示。 6. 在JSP页面中根据分页导航条传递的参数,重新查询数据显示在页面上。 示例代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP分页显示数据</title> </head> <body> <h1>用户列表</h1> <table> <tr> <th>ID</th> <th>用户名</th> <th>邮箱</th> </tr> <c:forEach var="user" items="${users}"> <tr> <td>${user.id}</td> <td>${user.username}</td> <td>${user.email}</td> </tr> </c:forEach> </table> <br> <div> <c:if test="${currentPage > 1}"> <a href="list.jsp?page=${currentPage - 1}">上一页</a> </c:if> <c:forEach begin="1" end="${totalPage}" varStatus="status"> <c:choose> <c:when test="${status.index == currentPage}"> <span>${status.index}</span> </c:when> <c:otherwise> <a href="list.jsp?page=${status.index}">${status.index}</a> </c:otherwise> </c:choose> </c:forEach> <c:if test="${currentPage < totalPage}"> <a href="list.jsp?page=${currentPage + 1}">下一页</a> </c:if> </div> </body> </html> ``` 在后台代码中,我们需要根据参数page和pageSize来计算出要查询的数据的起始位置和结束位置,然后从数据源中查询数据,并将查询结果封装成JavaBean对象放入请求作用域中。 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="com.example.User" %> <% int currentPage = Integer.parseInt(request.getParameter("page")); int pageSize = 10; int totalCount = 100; int totalPage = (totalCount + pageSize - 1) / pageSize; int startIndex = (currentPage - 1) * pageSize; int endIndex = startIndex + pageSize; List<User> users = new ArrayList<User>(); for (int i = startIndex; i < endIndex && i < totalCount; i++) { User user = new User(); user.setId(i + 1); user.setUsername("user" + (i + 1)); user.setEmail("user" + (i + 1) + "@example.com"); users.add(user); } request.setAttribute("users", users); request.setAttribute("currentPage", currentPage); request.setAttribute("totalPage", totalPage); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP分页显示数据</title> </head> <body> <%@ include file="list.jsp" %> </body> </html> ``` 在JSP页面中,我们需要根据请求作用域中的数据来渲染分页导航条和数据列表。 注意:为了防止SQL注入等安全问题,我们在实际开发中应该使用PreparedStatement来查询数据,并对用户输入的参数进行过滤和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值