jsp+servlet实现的简单分页

1,首先前台jsp页面发出请求

<a class=menuchild  href="search?topage=1" target=right><!--链接到查询所有成员的servlet-->人员查找</a>
<!--
topage是指当前页数,首先一开始查的是第一页,所以传递的是智能是1
-->



2,然后就是servlet来处理jsp页面发过来的请求

package action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

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

import util.PageBean;
import util.helper;

public class search extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public search() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html; charset=gb2312");
		request.setCharacterEncoding("gb2312");
		try {
			   PageBean pagebean = new PageBean();
			   helper contact = new helper();//数据库的操作类
			   int pagecount = pagebean.countPage();//获取总共的页数
			   
			   String topage = request.getParameter("topage");//获取当前的页码
			   if (Integer.parseInt(topage) > pagecount) { //判断当前的页码是否越界,如果是的话就进行处理
				    topage =String.valueOf(pagecount);
				   } else if (Integer.parseInt(topage) <= 0) {
				    topage = "1";
				   }
			  
			   ArrayList news = contact.getData(topage, pagecount);
			   
			   
			   request.getSession().setAttribute("pagecount", pagecount);
			   request.getSession().setAttribute("showpage", topage);//将当前的页码返回给页面,这样进行计算
			   request.getSession().setAttribute("news1", news);
			   response.sendRedirect("search.jsp");
			} catch (Exception e) {
			   e.printStackTrace();
			}
			}
	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
3,其中的PageBean

package util;

public class PageBean {//分页操作的类
	
	public int maxPage; // 一共有多少页
	public int maxRowCount; // 一共有多少行
	public int pagesize = 5; // 每页多少行
	public PageBean() {
	}
	
	public int countPage() throws Exception {
		int maxRowCount=this.MaxCount();
		/*if (maxRowCount % this.pagesize == 0) {//方法一
		   maxPage = maxRowCount / this.pagesize;
		} else {
		   maxPage =maxRowCount/ this.pagesize + 1;
		}*/
		maxPage = (maxRowCount-1)/this.pagesize+1;//方法二
		return maxPage;
	}
	
	public int MaxCount() throws Exception {
		helper contact=new helper();
		this.maxRowCount = contact.getAvailableCount(); // 得到总行数
		        return maxRowCount;
	}
}

3,数据库的处理

package util;

public class PageBean {//分页操作的类
	
	public int maxPage; // 一共有多少页
	public int maxRowCount; // 一共有多少行
	public int pagesize = 5; // 每页多少行
	public PageBean() {
	}
	
	public int countPage() throws Exception {
		int maxRowCount=this.MaxCount();
		/*if (maxRowCount % this.pagesize == 0) {//方法一
		   maxPage = maxRowCount / this.pagesize;
		} else {
		   maxPage =maxRowCount/ this.pagesize + 1;
		}*/
		maxPage = (maxRowCount-1)/this.pagesize+1;//方法二
		return maxPage;
	}
	
	public int MaxCount() throws Exception {
		helper contact=new helper();
		this.maxRowCount = contact.getAvailableCount(); // 得到总行数
		        return maxRowCount;
	}
}


4,链接数据库的代码(里面有需要用的函数,位置你们可以自己换)

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.util.ArrayList;

import com.mysql.jdbc.PreparedStatement;

import model.member;





public final class helper {
	
	public Connection connstr = null;
	public ResultSet res = null;
	public PreparedStatement prase = null;

	
	public static final Connection getConnection(){
		
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/syyz??useUnicode=true&characterEncoding=utf-8&autoReconnect=true", "root", "123456");
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage()+"OK");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println(e.getMessage()+"OK");
			e.printStackTrace();
		}
		return conn;
		
	}
	
	public static final void close(Connection connection, Statement statement, ResultSet resultSet) {
		try {
			if (connection!= null) {
				connection.close();
			}
			if (statement!= null) {
				statement.close();
			}
			if (resultSet!= null) {
				resultSet.close();
			}
		} catch (SQLException e) {
			System.out.println(e.getMessage()+"OK");
			e.printStackTrace();
		}
	}
	

	
	/** *返回要查询的记录数 */
	public int getAvailableCount() throws Exception {
	int ret = 0;
	String strSql = "select count(*) from member";
	Connection conn = this.getConnection();
	Statement stmt = conn.createStatement();
	ResultSet rset = stmt.executeQuery(strSql);
	while (rset.next()) {
	   ret = rset.getInt(1);
	}
	return ret;
	}
	
	/*获取查寻的记录数*/
	public ArrayList getData(String topage, int pagecount)//topage是要转向的页数,pagecount是总页数
	   throws NumberFormatException, SQLException {
	String sql = "select * from member";
	Statement state = null;
	ResultSet rs = null;
	int pagesize = 5;//每页的记录数
	int showpage = 1;//当前的页数
	ArrayList list = new ArrayList();
	int j = 0;
	try {
	   Connection conn = this.getConnection();
	   state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
	     ResultSet.CONCUR_READ_ONLY);
	   rs = state.executeQuery(sql);
	} catch (Exception e) {
	   System.out.println("exception");
	}
	if (!rs.next()) {
	   System.out.println("no records!");
	} else {
	   rs.last();
	   if (topage != null) {
	    showpage = Integer.parseInt(topage);
	    if (showpage > pagecount) {
	     showpage = pagecount;
	    } else if (showpage <= 0) {
	     showpage = 1;
	    }
	   }
	   
	   rs.absolute((showpage - 1) * pagesize + 1);//指针移动在结果集中的位置
	   for (int i = 1; i <= pagesize; i++) {
	    member mem = new member();
	    	mem.setMemberName(rs.getString(1));
	    	mem.setEmail(rs.getString(2));
	    	mem.setImageFile(rs.getString(3));
	    	list.add(j, mem);
	    	++j;
	    if (!rs.next())
	     break;
	   }
	}
	return list;
	}
	
	
	


}






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值