欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb 简单分页实现代码

程序员文章站 2024-03-11 19:30:25
javaweb 简单分页的实现: 这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部...

javaweb 简单分页的实现:

这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下:

<form action="pageservlet">
     用户名:<input type="text" name="username"><br>
    密 码:<input type="text" name="password"><br>
    <input type="submit" value="提交">
   </form>

首先建立实体类user.java并添加get和set方法:

public class user {
  private string username;
  private string password;
  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;
  }
  
}

我们可以看到form表单是提交到pageservlet中,所以我们新建一个pageservlet,并在servlet中获取到数据,同时做一些分页的准备,具体含义可以参照注释理解,pageservlet代码:

public class pageservlet extends httpservlet {
  public void doget(httpservletrequest request, httpservletresponse response)
      throws servletexception, ioexception {
    list<user> list = new arraylist<user>();
    // 在这里我不再连接数据库而是用虚拟的数据进行测试效果,小伙伴可以连接数据库查询到之后返回一个list
    for (int i = 1; i < 7; i++) {
      user user1 = new user();
      user1.setusername("第" + i + "个用户名");
      user1.setpassword("第" + i + "密码");
      list.add(user1);
    }
    httpsession session = request.getsession();
    // 将数据存到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 = 3;
    // 在实际开发中我们的总页数可以根据sql语句得到查询到的总条数,然后用总条数除每页的条数得到总页数
    session.setattribute("countpage", countpage);
    request.getrequestdispatcher("index.jsp").forward(request, response);
  }

  public void dopost(httpservletrequest request, httpservletresponse response)
      throws servletexception, ioexception {

  }

}

在上述代码中我们最终将转发到index.jsp页面,此时我们所有的数据都将显示在index.jsp中,用jstl和el表达式获取得到,index.jsp主要代码如下:

<body>
  <c:foreach items="${userlist}" var="user" begin="${(pagenos-1)*2 }"
    end="${pagenos*2-1}">
    <center>
      <div>${user.username}</div>
    </center>
    <center>
      <div>${user.password}</div>
    </center>
  </c:foreach>
  <center>
  <c:if test="${pagenos>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">
<h4 align="center">共${countpage}页 
<input type="text" value="${pagenos}" name="pagenos" size="1">页
<input type="submit" value="go">
</h4>
</form>
 </body>

第二行中我们用<c:foreach >对session.setattribute();中的内容进行获取。注意,这里我默认是每页两条数据,所以是(pagenos-1)*2,如果每页n条数据则需将2改为n,当然n也可以从后台servlet中获取得到。

同时,因为我们在index.jsp中用了jstl表达式,所以记得要导入引用:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

到这里我们就完成了一个简单的分页,快去试试吧。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!