使用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完成分页查询的主要内容,如果未能解决你的问题,请参考以下文章

用Servlet与JSP中实现分页查询

Oracle+Jsp分页

jquery ajax 调用kkpager插件 异步加载重新生成分页后,点击页数还是跟首次加载一样

一次性完成分页查询并且附带数据总条数

jsp分页计算总页数公式

jsp 如何将查询结果实现分页,最好简单易懂