jsp分页

分页的实现的思路

2.首先设计Page类

private int currentpage = 1;  //当前页面
	private int countpage;			//总记录数
	private int totalpage;			//总页数
	private int eachpage  =3;		//每页数,  每一页显示的数
	private List<Xiwen>  list = null;

无参构造
4个有参构造
public int getCurrentpage() {
		return currentpage;
	}
	public void setCurrentpage(int currentpage) {
		this.currentpage = currentpage;
	}
	public int getCountpage() {
		return countpage;
	}
	public void setCountpage(int countpage) {
		this.countpage = countpage;
		//通过总记录数计算每页的个数
		if(this.countpage>0) {
			this.totalpage=(this.countpage % this.eachpage)==0?
					this.countpage/this.eachpage:
						(this.countpage/this.eachpage)+1;
		}
	}
	public int getTotalpage() {
		return totalpage;
	}
	public void setTotalpage(int totalpage) {
		this.totalpage = totalpage;
	}
	public int getEachpage() {
		return eachpage;
	}
	public void setEachpage(int eachpage) {
		this.eachpage = eachpage;
	}
	public List<Xiwen> getList() {
		return list;
	}
	public void setList(List<Xiwen> list) {
		this.list = list;
	}

2.  UserDaoImpl()类 连接数据库,获取总记录数,获取集合每页的个数

    private Connection  conn = null;
	private ResultSet  rs = null;
	private PreparedStatement pr =null;
	Jdbc jj = new Jdbc();

//获得总记录数
	public int countpage() {
		conn = jj.getconnection();
		String sql ="select count(1) from xiwen";
		int count =0;
		try {
			pr = conn.prepareStatement(sql);
			rs = pr.executeQuery();
			rs.next();
			count = rs.getInt(1);
		} catch (SQLException e) {
		
			e.printStackTrace();
		}finally {
			jj.closeAll(rs, pr, conn);
		}
		return count;
	}
	//获得每页显示的数
	public List<Xiwen> eachsp(int currentpage, int eachpage) {
		List<Xiwen> list = new ArrayList<Xiwen>();
		Xiwen xiwen = null;
		conn = jj.getconnection();
		String sql ="SELECT * FROM xiwen LIMIT ?,?";
		int index = (currentpage-1)*eachpage;
		try {
			pr = conn.prepareStatement(sql);
			pr.setInt(1, index);
			pr.setInt(2, eachpage);
			rs = pr.executeQuery();
			while(rs.next()) {
				xiwen = new Xiwen();
				xiwen.setId(rs.getInt("id"));
				xiwen.setTitle(rs.getString("title"));
				xiwen.setContent(rs.getString("content"));
				xiwen.setAuthor(rs.getString("author"));
				xiwen.setData(rs.getString("data"));
				list.add(xiwen);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			jj.closeAll(rs, pr, conn);
		}
		return list;
	}

3.  UserserviceImpl()类  业务层调用

public Page pageAll(int currentpage, int eachpage) {
		UserDao ud = new UserDaoImpl();
		Page page = new Page();
		page.setCurrentpage(currentpage);
		//1.把从数据库获取的值放回Page对象,   进而就初始化countpage原来的值,从而变成现在传进行去的值
        int as =  ud.countpage();
		page.setCountpage(as);
		System.out.println("从数据层获取的总记录数"+as);
		
		//2. 把获取的集合放到page对中
		List<Xiwen> lis= ud.eachsp(currentpage, eachpage);
		page.setList(lis);
				
		return page;
	}

4. Servlet接受jsp页面传来的值,调用业务层方法将值放入,返回到Page类。再将变量page传入到session对象,jsp页面通过EL表达式获取。

package com.qh.servlet;

import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import com.qh.pojo.Page;

import com.qh.service.UserService;
import com.qh.serviceImpl.UserserviceImpl;

public class PageList extends HttpServlet{
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		this.doPost(req, resp);
	}
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		UserService us = new UserserviceImpl();
	
		String curreatpage = req.getParameter("countpage");
		if(curreatpage == null) {
			curreatpage = "1";
		}
		Integer curreatpagee = Integer.parseInt(curreatpage);
		System.out.println("从前台获取的eountpage当前页的值:"+curreatpagee);
	
		String eachpage = req.getParameter("eachpage");
		if(eachpage == null) {
			eachpage = "3";
		}
		Integer eachpagee = Integer.parseInt(eachpage);
		System.out.println("从前台获取的eachpagee每页显示的值:"+eachpagee);
		
		Page page =us.pageAll(curreatpagee, eachpagee);
		HttpSession session = req.getSession();
		if(page != null) {
			session.setAttribute("pagelist", page);
			resp.sendRedirect("page1.jsp");
		}
	}
}

5.jsp页面设置上一页下一页

<c:forEach  items="${pagelist.list}" var="xw" >
    <tr>   
        <td>${xw.biaoti }</td>
        <td>${xw.zuoze }</td>
        <td>${xw.data }</td>
        <td><a href="Update.jsp?nameee=${xw.id}">修改</a> </td>
        <td><a href="deletexw?naid=${xw.id }">删除</a></td>
    </tr>
    <br/>
</c:forEach>
</ul>
<p align="right">
		<span>当前页为:[${pagelist.getCurrentpage()}/${pagelist.getTotalpage()}]</span>
	<c:if test="${pagelist.getCurrentpage()>1}">
		<a href="mess?countpage=${pagelist.getCurrentpage()-1}&eachpage=${pagelist.getEachpage()}">上一页</a>
	</c:if>
	<c:if test="${pagelist.getCurrentpage()<pagelist.getTotalpage()}">
		<a href="mess?countpage=${pagelist.getCurrentpage()+1}&eachpage=${pagelist.getEachpage()}">下一页</a>
		<a href="mess?countpage=${pagelist.getTotalpage()}&eachpage=${pagelist.getEachpage()}">末页</a>
	</c:if>
</p>

6. web.xml文件配置   超链接a标签mess  xml找到mess转到Servlet    PageList控制层 。 页面之间跳转到Servlet都需要配置Servlet。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
 
  <display-name>Dome5</display-name>

<servlet>
	<servlet-name>ccc</servlet-name>
	<servlet-class>com.qh.servlet.PageList</servlet-class>    //Servlet真实的类路径
</servlet>
<servlet-mapping>
	<servlet-name>ccc</servlet-name>    //name的值ccc需要跟上面的name值一样
	<url-pattern>/mess</url-pattern>    //客户端访问这个Servlet   mess是由jsp页面超链接href中设置的mess
</servlet-mapping>

  
</web-app>

7.前端页面

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值