jsp+jdbc+javaBean+servlet实现分页显示功能

时间:2022-09-20 20:15:15

数据库中的数据表数据如下:

jsp+jdbc+javaBean+servlet实现分页显示功能

javaBean: 建立Page类用来存储从数据库查询到的数据信息和当前页面信息。

public class Page {
	private int pagenum;//当前页面
	private int pagesize;//页面大小
	private List<Book> books;//页面数据
	public int getPagenum() {
		return pagenum;
	}
	public void setPagenum(int pagenum) {
		this.pagenum = pagenum;
	}
	public int getPagesize() {
		return pagesize;
	}
	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}
	public List<Book> getBooks() {
		return books;
	}
	public void setBooks(List<Book> books) {
		this.books = books;
	}
}

Dao层(只给出了方法):

public List<Book> getPageDates(int startindex, int endindex) {
		// TODO Auto-generated method stub
				List<Book> bookList=new ArrayList<Book>();
				Connection con=null;
				PreparedStatement ps=null;
				ResultSet rs=null;
				String sql="select * " + 
						"from book " + 
						"limit ?,? ";
				con=DbUtils.getConnection();//连接数据库
		    	try {
		    		ps=con.prepareStatement(sql);
		    		ps.setInt(1,startindex);
		    		ps.setInt(2, endindex);
		    		rs=ps.executeQuery();
		    		while(rs.next()) {
		    			Book b1=new Book();
		    			b1.setBookid(rs.getInt(1));
		    			b1.setBookname(rs.getString(2));
		    			b1.setAuthor(rs.getString(3));
		    			b1.setPublishing_house(rs.getString(4));
		    			b1.setPrice(rs.getDouble(5));
		    			b1.setInformation(rs.getString(6));
		    			b1.setStock(rs.getInt(7));
		    			bookList.add(b1);
		    		}
		    		return bookList;
		    	}catch(Exception e) {
		    		return null;
		    	}
	}

Service层(只给出了查找页面数据的方法):

 public Page getPageDates(int startindex,int endindex) {
    	Page page=new Page();
    	page.setBooks(bookDao.getPageDates(startindex, endindex));
    	return page;
    }

Servlet(doGet方法):首先判断当前页面是那一页,若获取当前页面为空或者值等于0,则从数据表0索引位置开始查找;反之,当前页面的大小乘每页数据量为起始索引位置开始查找。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String pagenum=(String)request.getParameter("pagenum");//获取当前页面大小
		int startindex=0;
		int endindex=0;
		Integer page_num;
		if(pagenum==null) {//当前页面为空
			page_num=0;
			startindex=0;
			endindex=5;
		}else {//当前页面不为空
			 page_num=Integer.parseInt(pagenum);
			 if(page_num<=0) {
				 page_num=0;
					startindex=0;
					endindex=5;
			 }else {
				 startindex=5*page_num;
					endindex=5;
			 }
			
		}
		Page page=businessService.getPageDates(startindex, endindex);  //查找数据
		page.setPagenum(page_num);
		request.setAttribute("page", page);  //将页面信息作为参数传递给jsp页面
		request.getRequestDispatcher("showBookByPage.jsp").forward(request, response);
	}

jsp页面:


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.bsol.hss.bean.Book" %>
<%@ page import="com.bsol.hss.bean.Page" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>书籍信息</title>
</head>
<body>
<% 
   Page page1=(Page)request.getAttribute("page");//获取从Servlet传递过来的页面信息
    List<Book> books=page1.getBooks();//得到页面存储的书籍信息
    int pagenum=page1.getPagenum();   //得到当前页面为第几页
%>
	<div>
		<big>所有书籍信息</big>
	</div>
	<div >
		<table >
			<% for(int i=0;i<books.size();i++){
			Book book=books.get(i); %>
				<tr>
					<td>
						<%= i+1 %>.<%=book.getBookname() %> 
					</td>
					<td>
						库存:<%= book.getStock() %>
					</td>
				</tr>
			<% } %>
		</table>
<Button  onclick="window.location.href='ShowBooksByPageServlet?pagenum=<%= pagenum-1%>'">上一页</Button>
<Button  onclick="window.location.href='ShowBooksByPageServlet?pagenum=<%= pagenum+1%>'">下一页</Button>
	</div>
</body>
</html>

jsp页面显示如下:

jsp+jdbc+javaBean+servlet实现分页显示功能