使用Servlet和JSP完成分页查询
Posted Dream_it_possible!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Servlet和JSP完成分页查询相关的知识,希望对你有一定的参考价值。
工程目录结构:
1、分页可以使数据库表中的数据以表的形式显示出来,每页展示限制的数量,直观明了。
2、分页查询语句mysql为:select *from users limit ?,?;
第一个参数为从第一页开始跳过的条数,第二个参数为每页显示的条数
注:跳过的条数=(总页数-1)/每页的条数;
假设每页显示3条:Integer num=(total-1)/3;
ps.setInt(1,num);
ps.setInt(2,3);
3.持久层,在Dao包中写一个分页查询的方法UserDao,根据传入的总页数来进行查询,存放到一个users数组里面
代码如下:
public List<User> findAllPage(Integer total)
//数组
List<User> users=new ArrayList<User>();
//获取连接
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try
conn=DBUtils.getIntance();
String sql="select *from users limit ?,?";
ps=conn.preparedStatement(sql);
Integer num=(total-1)*3;//3表示每页显示三条数据
ps.setInt(1,num);
ps.setInt(2,3);
rs=ps.executeQuery();
while(rs.hasNext())
User user=new User();
int id=rs.getInt("id");
String un=rs.getString("username");
String pw=rs.getString("password");
String email=rs.getString("email");
user.setId(id);
user.setUsername(un);
user.setPassword(pwd);
user.setEmail(em);
users.add(user);
catch(Exception e)
//System.out.println("users:"+users);
//将用户返回
return users;
4、控制层,在ActionServlet里面来处理请求
1)获取到用户表的总条数,通过查询用户表所有记录,调用size()方法即可获取大小。
2)获取到jsp页面传过来的第几页
3)调用Dao包下的findAllPage()方法
4)将第几页和总页数放入到request对象里面,一同转发给listUsers.jsp
代码如下:
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
//处理分页请求
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf8");
UserDAO dao=new UserDAO();
int page=Integer.parseInt(request.getParameter("page"));
List<User> users=dao.findAllPage(page);
List<User> allUsers=dao.findAllUser();
int size=allUsers.size();//数据总条数
//下一页就是page+1,
System.out.println();
int total=size/3;//总页数
request.setAttribute("total", total);
request.setAttribute("page", page);
System.out.println(users.size());
request.setAttribute("users", users);
request.getRequestDispatcher("/myweb/listUsers.jsp").forward(request, response);
5、listUsers.jsp页面用来展示显现出来的列表,点击下一页
代码如下:
<%
Integer page1=(Integer)request.getAttribute("page");
if(page1==null)
page1=1;
request.setAttribute("page", page1);
else if(page1>=(Integer)request.getAttribute("total"))
//跳转到第一页
request.setAttribute("page", 0);
%>
<a href="<%=request.getContextPath()%>/action?page=1">首页</a>
<a href="<%=request.getContextPath()%>/action?page=<%= (Integer)request.getAttribute("page")+1%>">下一页</a>
注:此处到最后一页,继续点击下一页会跳转至首页。
效果图如下:
以上是关于使用Servlet和JSP完成分页查询的主要内容,如果未能解决你的问题,请参考以下文章